yuanyiming 1 éve
szülő
commit
196c8f7746
100 módosított fájl, 0 hozzáadás és 22485 törlés
  1. 0 3
      .gitignore
  2. 0 16
      .hbuilderx/launch.json
  3. 0 169
      App.vue
  4. 0 126
      components/activity-case/activity-case.vue
  5. 0 142
      components/detailBlock/detailBlock.vue
  6. 0 111
      components/statusBar/statusBar.vue
  7. 0 113
      components/tabBar/tabBar.vue
  8. 0 272
      components/teaching-case/teaching-case.vue
  9. 0 60
      components/viewX-Case/viewX-Case.vue
  10. 0 20
      index.html
  11. 0 22
      main.js
  12. 0 72
      manifest.json
  13. 0 12
      node_modules/.package-lock.json
  14. 0 202
      node_modules/@dcloudio/uni-ui/LICENSE
  15. 0 245
      node_modules/@dcloudio/uni-ui/README.md
  16. 0 268
      node_modules/@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue
  17. 0 121
      node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb-item/uni-breadcrumb-item.vue
  18. 0 41
      node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb/uni-breadcrumb.vue
  19. 0 546
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/calendar.js
  20. 0 12
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/en.json
  21. 0 8
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/index.js
  22. 0 12
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hans.json
  23. 0 12
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hant.json
  24. 0 187
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar-item.vue
  25. 0 566
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar.vue
  26. 0 360
      node_modules/@dcloudio/uni-ui/lib/uni-calendar/util.js
  27. 0 272
      node_modules/@dcloudio/uni-ui/lib/uni-card/uni-card.vue
  28. 0 317
      node_modules/@dcloudio/uni-ui/lib/uni-col/uni-col.vue
  29. 0 402
      node_modules/@dcloudio/uni-ui/lib/uni-collapse-item/uni-collapse-item.vue
  30. 0 147
      node_modules/@dcloudio/uni-ui/lib/uni-collapse/uni-collapse.vue
  31. 0 294
      node_modules/@dcloudio/uni-ui/lib/uni-combox/uni-combox.vue
  32. 0 6
      node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/en.json
  33. 0 8
      node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/index.js
  34. 0 6
      node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hans.json
  35. 0 6
      node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hant.json
  36. 0 267
      node_modules/@dcloudio/uni-ui/lib/uni-countdown/uni-countdown.vue
  37. 0 821
      node_modules/@dcloudio/uni-ui/lib/uni-data-checkbox/uni-data-checkbox.vue
  38. 0 45
      node_modules/@dcloudio/uni-ui/lib/uni-data-picker/keypress.js
  39. 0 551
      node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.vue
  40. 0 622
      node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-picker.js
  41. 0 323
      node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.vue
  42. 0 517
      node_modules/@dcloudio/uni-ui/lib/uni-data-select/uni-data-select.vue
  43. 0 200
      node_modules/@dcloudio/uni-ui/lib/uni-dateformat/date-format.js
  44. 0 88
      node_modules/@dcloudio/uni-ui/lib/uni-dateformat/uni-dateformat.vue
  45. 0 177
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar-item.vue
  46. 0 938
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar.vue
  47. 0 22
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/en.json
  48. 0 8
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/index.js
  49. 0 22
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hans.json
  50. 0 22
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hant.json
  51. 0 934
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/time-picker.vue
  52. 0 1032
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/uni-datetime-picker.vue
  53. 0 403
      node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/util.js
  54. 0 45
      node_modules/@dcloudio/uni-ui/lib/uni-drawer/keypress.js
  55. 0 183
      node_modules/@dcloudio/uni-ui/lib/uni-drawer/uni-drawer.vue
  56. 0 56
      node_modules/@dcloudio/uni-ui/lib/uni-easyinput/common.js
  57. 0 657
      node_modules/@dcloudio/uni-ui/lib/uni-easyinput/uni-easyinput.vue
  58. 0 491
      node_modules/@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue
  59. 0 4
      node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/en.json
  60. 0 8
      node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/index.js
  61. 0 4
      node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hans.json
  62. 0 4
      node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hant.json
  63. 0 161
      node_modules/@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue
  64. 0 224
      node_modules/@dcloudio/uni-ui/lib/uni-file-picker/choose-and-upload-file.js
  65. 0 667
      node_modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.vue
  66. 0 325
      node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-file.vue
  67. 0 292
      node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-image.vue
  68. 0 109
      node_modules/@dcloudio/uni-ui/lib/uni-file-picker/utils.js
  69. 0 627
      node_modules/@dcloudio/uni-ui/lib/uni-forms-item/uni-forms-item.vue
  70. 0 397
      node_modules/@dcloudio/uni-ui/lib/uni-forms/uni-forms.vue
  71. 0 293
      node_modules/@dcloudio/uni-ui/lib/uni-forms/utils.js
  72. 0 486
      node_modules/@dcloudio/uni-ui/lib/uni-forms/validate.js
  73. 0 6
      node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/en.json
  74. 0 8
      node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/index.js
  75. 0 6
      node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hans.json
  76. 0 6
      node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hant.json
  77. 0 229
      node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/uni-goods-nav.vue
  78. 0 127
      node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue
  79. 0 142
      node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue
  80. 0 134
      node_modules/@dcloudio/uni-ui/lib/uni-group/uni-group.vue
  81. 0 1169
      node_modules/@dcloudio/uni-ui/lib/uni-icons/icons.js
  82. 0 96
      node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue
  83. 0 663
      node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.css
  84. BIN
      node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.ttf
  85. 0 144
      node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list-item.vue
  86. 0 367
      node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list.vue
  87. 0 128
      node_modules/@dcloudio/uni-ui/lib/uni-link/uni-link.vue
  88. 0 107
      node_modules/@dcloudio/uni-ui/lib/uni-list-ad/uni-list-ad.vue
  89. 0 58
      node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.scss
  90. 0 593
      node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.vue
  91. 0 534
      node_modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item.vue
  92. 0 123
      node_modules/@dcloudio/uni-ui/lib/uni-list/uni-list.vue
  93. 0 65
      node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.vue
  94. 0 87
      node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.wxs
  95. 0 5
      node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/en.json
  96. 0 8
      node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/index.js
  97. 0 5
      node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hans.json
  98. 0 5
      node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hant.json
  99. 0 112
      node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue
  100. 0 357
      node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-nav-bar.vue

+ 0 - 3
.gitignore

@@ -1,3 +0,0 @@
-node_modules
-unpackage
-launch.json

+ 0 - 16
.hbuilderx/launch.json

@@ -1,16 +0,0 @@
-{ // 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"
-     	},
-     	"mp-weixin" : 
-     	{
-     		"launchtype" : "local"
-     	},
-     	"type" : "uniCloud"
-     }
-    ]
-}

+ 0 - 169
App.vue

@@ -1,169 +0,0 @@
-<script>
-	import Vue from 'vue'
-		// import app from './utils/api.js'
-		export default {
-			onLaunch: function() { 
-				uni.getSystemInfo({
-					success: function (res) {
-						Vue.prototype.screenHeight=res.screenHeight
-						Vue.prototype.screenWidth=res.screenWidth
-						console.log(res);
-						const tabBarHeight = res.screenHeight - res.windowHeight;
-						Vue.prototype.tabBarHeight=tabBarHeight
-						if (uni.getMenuButtonBoundingClientRect()) {
-							console.log('小程序');
-							// 小程序状态栏是指显示电量的那一小部分
-							thisWechat(res.statusBarHeight)
-						}else{
-							console.log('app');
-							thisApp(res.statusBarHeight)
-						}
-					}
-				});
-				
-				function thisWechat(statusBarHeight){
-					
-					
-					
-					// 获取胶囊位置
-					let meunButtonInfo=uni.getMenuButtonBoundingClientRect()
-					// console.log(meunButtonInfo);
-					
-					Vue.prototype.meunButtonInfo=meunButtonInfo.height
-					
-					// 计算出导航栏高度+动态栏
-					let  allHeight = meunButtonInfo.bottom + (meunButtonInfo.top - statusBarHeight )*2;
-					// console.log(allHeight);
-					let navheight;
-					Vue.prototype.navheight=allHeight
-					
-					// 按钮离顶
-					let alltop = meunButtonInfo.top 
-					Vue.prototype.navTop=alltop
-					
-					// 动态栏高度
-					let statusHeight
-					Vue.prototype.statusHeight=statusBarHeight
-				};
-				
-				function thisApp(statusBarHeight){
-					// console.log(uni.getSystemInfoSync());
-					// 导航栏高度
-					// let appAllHeight;console.log();
-					// Vue.prototype.appAllHeight=statusBarHeight+44+'px';
-					// console.log(statusBarHeight);
-					let customBarHeight;
-					if (uni.getSystemInfoSync().platform === 'android') {
-					     
-					      customBarHeight = statusBarHeight + 50;
-						  
-					    } else if (uni.getSystemInfoSync().platform === 'ios') {
-					      // iOS 平台
-					      // 在这里根据 iOS 平台的特性计算自定义状态栏高度
-					      // ...
-					      customBarHeight = statusBarHeight + 45;
-					    } else {
-					      // 其他平台
-					      // ...
-					      customBarHeight = statusBarHeight;
-					    }
-						// console.log(customBarHeight);
-					    Vue.prototype.customBar = customBarHeight;
-				}
-				
-			},
-			onShow() {
-			},
-			onLoad() {
-				
-			}
-	}
-</script>
-
-<style>
-	/*每个页面公共css */
-	body{
-		background-color: #f0f2f5;
-		/* font-family: PingFang SC; */
-		
-	}
-	view{
-			box-sizing: border-box;
-			padding: 0;
-	}
-	/* 公共字体大小类 */
-	
-	.one-font{
-		font-size: 48rpx;
-		line-height: 72rpx;
-		font-weight: 600;
-	}
-	.two-font{
-		font-size: 40rpx;
-		line-height: 56rpx;
-	}
-	.twoZ-font{
-		font-size: 40rpx;
-		line-height: 56rpx;
-		font-weight: 500;
-	}
-	.three-font{
-		font-size: 34rpx;
-		line-height: 48rpx;
-		font-weight: 500;
-	}
-	.num-font{
-		font-size: 36rpx;
-		line-height: 56rpx;
-		font-weight: 700;
-	}
-	.bmTit-font{
-		font-size: 36rpx;
-		line-height: 44rpx;
-		font-weight: 500;
-	}
-	.fNum-font{
-		font-size: 44rpx;
-		line-height: 56rpx;
-		font-weight: 700;
-	}
-	.zw-font{
-		font-size: 34rpx;
-		line-height: 48rpx;
-	}
-	.btn-font{
-		font-size: 28rpx;
-		line-height: 40rpx;
-		font-weight: 600;
-	}
-	.fwb-font{
-		font-size: 28rpx;
-		line-height: 40rpx;
-		font-size: 400;
-	}
-	.sZw-font{
-		font-size: 26rpx;
-		line-height: 42rpx;
-		font-size: 400;
-	}
-	.sBtn-font{
-		font-size: 24rpx;
-		line-height: 32rpx;
-		font-weight: 600;
-	}
-	.fz-font{
-		font-size: 24rpx;
-		line-height: 32rpx;
-		font-weight: 400;
-	}
-	.bq-font{
-		font-size: 20rpx;
-		line-height: 24rpx;
-	}
-	.bqZ-font{
-		font-size: 20rpx;
-		line-height: 24rpx;
-		font-weight: 600;
-	}
-	
-</style>

+ 0 - 126
components/activity-case/activity-case.vue

@@ -1,126 +0,0 @@
-<template>
-	<view class="teaching_case">
-		<view class="img">
-			<!-- <slot name="img"></slot> -->
-			<image src="../../static/activity/bg2.png" mode="aspectFill"></image>
-		</view>
-		
-		<view class="right">
-			<view class="title">
-				<view class="tag">类型</view>
-				<text>这里是活动标题标题标题</text>
-			</view>
-			
-			<view class="introduce">
-				活动描述活动描述活动描述活动描述活动描述活动描述活动描述
-			</view>
-			
-			<view class="operate">
-				<view class="left">
-					<view class="money">¥188</view>
-					<view class="person">已报名123人</view>
-				</view>
-				<button class="btn">立即报名</button>
-			</view>
-		</view>
-	</view>
-	
-</template>
-
-<script>
-	export default {
-		name:"activity-case",
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style lang="scss">
-	.teaching_case{
-		display: flex;
-		justify-content: space-between;
-		margin-bottom: 20px;
-		// padding-right: 20px;
-		padding: 0 15px;
-		
-		.img{
-			width: 180rpx;
-			height: 180rpx;
-			image{
-				width: 100%;
-				height:100%;
-			}
-		}
-		.right{
-			padding-left: 15px;
-			flex: 1;
-			width: 100rpx;
-			display: flex;
-			flex-direction: column;
-			align-content: flex-end ;
-			.title{
-				display: flex;
-				margin-bottom: 5px;
-				.tag{
-					border: 1px #00b2b6 solid;
-					font-size: 12px;
-					display: flex;
-					white-space: nowrap;
-					justify-content: center;
-					align-items: center;
-					padding: 2px 4px;
-					border-radius: 3px;
-					margin-right: 10rpx;
-					color: #00b2b6;
-				}
-				text{
-					overflow: hidden;
-					text-overflow:ellipsis;
-					white-space: nowrap;
-				}
-				
-			}
-			.introduce{
-				font-size: 16px;
-				color: #a7a7a7;
-				// padding: 20rpx 0;
-				overflow: hidden;
-				text-overflow:ellipsis;
-				white-space: nowrap;
-			}
-			.operate{
-				display: flex;
-				justify-content: space-between;
-				align-items: flex-end;
-				.left{
-					display: flex;
-					justify-content: space-between;
-					width: 260rpx;
-					.money{
-						color: #FFA338 ;
-						font-weight: bold;
-						font-size: 36rpx;
-					}
-					.person{
-						padding-top: 10rpx;
-						font-size: 24rpx;
-						
-					}
-				}
-					.btn{
-						width: 80px;
-						font-size: 12px;
-						background-color: #3081e8;
-						color: #fff;
-						border-radius: 30px;
-						margin: 0;
-						float: right;
-						margin-top: 10px;
-					}
-			}
-		}
-	}
-</style>

+ 0 - 142
components/detailBlock/detailBlock.vue

@@ -1,142 +0,0 @@
-<template>
-	<view class="detailBlock">
-		<view class="tit fwb-font" v-if="!item.isShow">教研室详情</view>
-		<view class="tit fwb-font" v-else>活动详情</view>
-		<view class="cont sZw-font">
-			会议时间:<text>10月7日上午八点(周日)</text>
-		</view>
-		<view class="cont sZw-font">
-			活动形式:<text style="color: #0056a8;">线上直播</text>
-		</view>
-		<view class="cont sZw-font">
-			<!-- <view id="myElement" class="activeTit">
-					教研室概况:查看更多查看更多查看更多看更多查看更多查看更多查看更多查看更多查看更多查看更多查看更多看更多查看更多查看更多查看更多查看更多
-			   </view>
-				<text class="zdwz" style="color: #0056a8;float: right;" @click="zdwz">收起</text> -->
-			<view class="content">
-				<view ref="p" :class="getClassNames">
-					<text style="color: #999999;">教研室概况:</text>
-					这是一段需要展开收起的文字,可以有很多很多的字,可能会占据很多的空间。因此,在默认情况下,我们只会显示部分文字,而把其余的部分折叠起
-					来。如果需要查看全部内容,可以点击“查看更多按钮,文
-				</view>
-
-				<view ref="btnnn" :class="getClassNames1" @click="qqq">
-					{{isAll ? '收起' : '展开'}}
-				</view>
-			</view>
-			
-			
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "detailBlock",
-		props: {
-			item: {
-				type: Object,
-				default () {
-					return {
-						isshow: 0 //0教研室 1 活动
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				isAll: false,
-				meunButtonInfo:this.meunButtonInfo, //胶囊高度
-			};
-		},
-		computed: {
-			getClassNames() {
-				return {
-					'p': !this.isAll,
-					'is-expanded': this.isAll
-				};
-			},
-			getClassNames1() {
-				return {
-					'btn-more': !this.isAll,
-					'is-zd': this.isAll
-				};
-			}
-		},
-		methods: {
-			// zdwz(){
-			// 	const query = wx.createSelectorQuery();
-			// 	    query.select('#myElement').fields({ computedStyle: ['lineClamp'] }).exec((res) => {
-			// 	      const element = res[0];
-			// 	      element.style.webkitLineClamp = '4'; // 修改行数限制为 2
-			// 	    });
-			// },
-			qqq() {
-				console.log(111);
-				this.isAll = !this.isAll
-
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.detailBlock {
-		background-color: #ffffff;
-		border-radius: 10rpx;
-		padding: 30rpx;
-
-		.tit {
-			font-weight: 600;
-			margin-bottom: 10px;
-		}
-
-		.cont {
-			color: #999999;
-			margin-bottom: 10px;
-			text {
-				color: #666666;
-			}
-
-			.content {
-				// display: flex;
-				// float: left;
-			}
-
-			.content .p {
-				width: 90%;
-				color: #666666;
-				// max-width: 100%;
-				// display:inline-block;
-				display: block;
-				// float: left;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				white-space: nowrap;
-				// padding-right: 50rpx;
-				/*设置文字溢出时显示省略号*/
-
-			}
-
-			.content .p.is-expanded {
-				width: 100%;
-				overflow: visible;
-				white-space: normal;
-				/*文字溢出时不再显示省略号*/
-			}
-
-			.btn-more {
-				float: right;
-				display: inline-block;
-				// width: 60px;
-				transform: translate(0, -100%);
-				color: #0056a8;
-			}
-
-			.btn-more.is-zd {
-				transform: none;
-				// transform: translate(0,0);
-			}
-		}
-	}
-</style>

+ 0 - 111
components/statusBar/statusBar.vue

@@ -1,111 +0,0 @@
-<template>
-		<view class="statusBar" :style="{height: meunButtonInfo? navheight + 'px': customBar +'px'}">
-			<view class="nav" v-if="meunButtonInfo" :style="{height:navheight + 'px'}">
-				<view v-if="item.btn" class="backBtnSty" style="position: fixed;transform: translate(0,-50%);" :style="{width:'30px',marginTop:navTop+meunButtonInfo/2 +'px'}">
-					<!-- <image @click="backIndex" src="../../static/logo.png" mode="aspectFill"></image> -->
-					<uni-icons @click="backIndex" type="back" size="20"></uni-icons>
-				</view>
-				<view class="navTit" :style="{paddingTop:navTop+ 'px',lineHeight:meunButtonInfo+'px'}">
-					<view class="postTit">{{item.title}} </view>
-				</view>
-			</view>
-			<!-- app端 -->
-			<view class="nav" v-else :style="{height:customBar +'px'}">
-					<view v-if="item.btn" class="backBtnSty" style="position: fixed;transform: translate(0,-50%);" :style="{width:'30px',marginTop:appAllHeight/2 +'px'}">
-						<!-- <image @click="backIndex" src="../../static/img/back.png"  mode="aspectFill"></image> -->
-						<uni-icons @click="backIndex" type="back" size="20"></uni-icons>
-					</view>
-					<!-- 导航栏文字开始 -->
-					<view class="navTit" :style="{lineHeight:customBar+'px'}">
-						<view class="postTit">{{item.title}} </view>
-					</view>
-					<!-- 导航栏文字结束 -->
-			</view>
-	</view>
-	
-</template>
-
-<script>
-	export default {
-		name:"statusBar",
-		props:{ 
-			item:{
-				type:Object,
-				default(){
-					return{
-						title:'',
-						btn:1  //判断是否显示返回按钮
-					}
-					
-				}
-			}
-		},
-		data() {
-			return {
-				navheight:this.navheight,		//导航栏高度
-				statusHeight:this.statusHeight,   //状态栏高度
-				navTop:this.navTop,                //胶囊离顶高度
-				meunButtonInfo:this.meunButtonInfo, //胶囊高度
-				
-				appAllHeight:this.customBar,//app导航栏高度
-			};
-		},
-		methods:{
-			backIndex(){
-				uni.navigateBack({
-					url:this.item.btn
-				})
-			}
-		},
-		onLoad() {
-			console.log(this.meunButtonInfo);
-		}
-	}
-</script>
-
-<style lang="scss">
-		.statusBar{
-			// background-color: #000;
-		}
-		.nav{
-			width: 750rpx;
-			
-			background-color: #FFFFFF;
-			
-			position: fixed;
-			top: 0;
-			z-index: 11;
-			.backBtnSty{
-				width: 40rpx;
-				height: 40rpx;		
-				margin-left: 30rpx;
-				margin-top:50rpx;
-				image{
-					width: 16rpx;height: 28rpx;
-				}
-			}
-			.navTit{
-				width: 260rpx;
-				height: 44px;
-				margin: auto;
-				color: #ffffff;
-				// font-family: 'Microsoft YaHei';
-				text-align: center;
-				display: flex;
-				justify-content: space-around;
-				
-				.postTit{
-					height: 40px;
-					color: #000;
-					font-weight: bold;
-					display: inline-block; /* 将容器设置为行内块元素 */
-					vertical-align: bottom; /* 将文字垂直对齐到底部 */
-				}
-			}
-		}
-		 .tab-item-active {
-		    color: #FFFFFF !important;
-			font-size: 18px;
-			font-weight: bold;
-		  }
-</style>

+ 0 - 113
components/tabBar/tabBar.vue

@@ -1,113 +0,0 @@
-<template>
-	<view class="tabBar">
-		<uv-tabbar :value="value" @change="gotoBar">
-				<uv-tabbar-item class="txt" text="首页">
-					<template v-slot:active-icon>
-						<image class="icon" style="width: 36rpx;height: 36rpx;" src="../../static/tabbar/Fill 2.png"></image>
-					</template>
-					<template v-slot:inactive-icon>
-						<image class="icon" style="width: 36rpx;height: 36rpx;" src="../../static/tabbar/Fill 1.png"></image>
-					</template>
-				</uv-tabbar-item>
-				
-				<uv-tabbar-item text="资源库">
-					<template v-slot:active-icon>
-						<image class="icon" style="width: 40rpx;height: 32rpx;" src="/static/tabbar/zyk2.png"></image>
-					</template>
-					
-					<template v-slot:inactive-icon>
-						<image class="icon" style="width: 40rpx;height: 32rpx;" src="/static/tabbar/zyk.png"></image>
-					</template>
-				</uv-tabbar-item>
-				
-				<uv-tabbar-item text="活动">
-					<template v-slot:active-icon>
-						<image class="icon" style="width: 40rpx;height: 40rpx;" src="/static/tabbar/hd2.png"></image>
-					</template>
-					
-					<template v-slot:inactive-icon>
-						<image class="icon" style="width: 40rpx;height: 40rpx;" src="/static/tabbar/hd.png"></image>
-					</template>
-				</uv-tabbar-item>
-				
-				<uv-tabbar-item text="消息">
-					<template v-slot:active-icon>
-						<image class="icon" style="width: 38rpx;height: 34rpx;" src="/static/tabbar/xx2.png"></image>
-					</template>
-					<template v-slot:inactive-icon>
-						<image class="icon" style="width: 38rpx;height: 34rpx;" src="/static/tabbar/xx.png"></image>
-					</template>
-				</uv-tabbar-item>
-				
-				<uv-tabbar-item text="我的">
-					<template v-slot:active-icon>
-						<image class="icon" style="width: 34rpx;height: 38rpx;" src="/static/tabbar/wd2.png"></image>
-					</template>
-					<template v-slot:inactive-icon>
-						<image class="icon" style="width: 34rpx;height: 38rpx;" src="/static/tabbar/wd.png"></image>
-					</template>
-				</uv-tabbar-item>
-			</uv-tabbar>
-	</view>
-</template>
-
-<script>
-	export default {
-		name:"tabBar",
-		data() {
-			return {
-				value: 0
-			};
-		},
-		methods:{
-			gotoBar(e){
-				// this.value=index
-				console.log(e);
-				switch(e){
-					case 0:
-						uni.switchTab({
-							url:'/pages/index/index'
-						})
-						break;
-					case 1:
-						uni.switchTab({
-							url:'/pages/resource/resource'
-						})
-						break;
-					case 2:
-						uni.switchTab({
-							url:'/pages/activityPage/activityPage'
-						})
-						break;
-					case 3:
-						uni.switchTab({
-							url:'/pages/message/message'
-						})
-						break;
-					default:
-						uni.switchTab({
-							url:'/pages/mine/mine'
-						})
-						break;
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.tabBar{
-		// position: fixed;
-		.icon {
-				width: 36rpx;
-				height: 36rpx;
-		}
-		/deep/ .uni-tabbar__label{
-			 font-size: 100rpx !important;
-			 font-weight: 400;
-			 line-height: 24rpx;
-			 
-		 }
-		
-	}
-</style>

+ 0 - 272
components/teaching-case/teaching-case.vue

@@ -1,272 +0,0 @@
-<template>
-	<view class="teaching_case" @click="gotoTeDetail">
-		<view class="img cell-img">
-			<!-- <slot name="img"></slot> -->
-			<image :src="classList.img" v-if="!item.btn" mode="aspectFill"></image>
-			<image :src="activeList.img" v-else mode="aspectFill"></image>
-		</view>
-
-		<view class="right">
-			<view class="">
-				<view class="title">
-					<view v-if="!item.btn" class="tag bqZ-font">类型</view>
-					<view v-else class="tag bqZ-font">类型</view>
-
-
-
-					<text class="btn-font" v-if="!item.btn" style="">{{ classList.className }}</text>
-					<text class="three-font" v-else>{{ activeList.className }}</text>
-				</view>
-
-				<view v-if="!item.btn" class="introduce fwb-font">
-					{{ classList.intro }}
-				</view>
-				<view v-else class="introduce fwb-font">
-					{{ activeList.intro }}
-				</view>
-			</view>
-
-
-			<view class="operate" v-if="!item.btn">
-				<view class="left">
-					<view class="opr" style="padding-right: 25rpx;">
-						<view class="icon">
-							<image src="http://43.139.158.220:5007/img/static/yym/Star 1 (Stroke).png" style="width: 28rpx;height: 26rpx;"
-								mode="aspectFill"></image>
-						</view>
-						<text class="fz-font">收藏</text>
-					</view>
-					<view class="opr">
-						<view class="icon">
-							<image src="http://43.139.158.220:5007/img/static/yym/Vector (Stroke).png" style="width: 22rpx;height: 26rpx;"
-								mode="aspectFill"></image>
-						</view>
-						<text class="fz-font">订阅</text>
-					</view>
-				</view>
-				<view class="">
-					<button class="btn sBtn-font" disableEventPropagation="true" @click.stop="join">立即参与</button>
-				</view>
-			</view>
-			<view class="operate" v-else>
-				<view class="left">
-					<view class="price num-font"><text class="three-font">¥</text> 188</view>
-					<view class="pernum fz-font">已报名{{ activeList.count }}人</view>
-				</view>
-				<view class="">
-					<button class="btn sBtn-font" @click.stop="actApply">立即报名</button>
-				</view>
-			</view>
-		</view>
-		<!-- <view class="" style="height: 50rpx;width: 100%;background-color: #ffffff;"></view> -->
-	</view>
-
-</template>
-
-<script>
-	export default {
-		name: "teaching-case",
-		props: {
-			item: {
-				type: Object,
-				default () {
-					return {
-						btn: 0 //0教研列表 1活动列表
-					}
-				}
-			},
-			classList: {
-				type: Object,
-				default () {
-					return []
-				}
-			},
-			activeList: {
-				type: Object,
-				default () {
-					return []
-				}
-			}
-		},
-		data() {
-			return {
-
-			};
-		},
-		methods: {
-			gotoTeDetail() {
-				if (this.item.btn) {
-					uni.navigateTo({
-						url: "/pages/activityDetail/activityDetail"
-					})
-				} else {
-					uni.navigateTo({
-						url: "/pages/teachingDetail/teachingDetail"
-					})
-				}
-
-			},
-			join() {
-				uni.navigateTo({
-					url: '/pages/jys/jys'
-				})
-			},
-			actApply() {
-				uni.navigateTo({
-					url: '/pages/hd/hd'
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.teaching_case {
-		display: flex;
-		justify-content: space-between;
-		// margin-bottom: 10px;
-		background-color: #ffffff;
-		padding: 20rpx 30rpx;
-		
-		// padding-bottom: 50rpx;
-		.img {
-			width: 160rpx;
-			height: 160rpx;
-
-			image {
-				width: 100%;
-				height: 100%;
-				border-radius: 10rpx;
-			}
-		}
-
-		.right {
-			padding-left: 20rpx;
-			flex: 1;
-			// height: 300px;
-			width: 100rpx;
-			display: flex;
-			flex-direction: column;
-			// align-content: flex-end ;
-			justify-content: space-between;
-			// align-content: space-between;
-
-			.title {
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				margin-bottom: 15rpx;
-
-				// margin-bottom: 10rpx;
-				.tag {
-					border: 1px #00b2b6 solid;
-					flex-shrink: 0;
-					letter-spacing: 2rpx;
-					width: 64rpx;
-					height: 32rpx;
-					display: flex;
-					white-space: nowrap;
-					justify-content: center;
-					align-items: center;
-					border-radius: 4rpx;
-					margin-right: 10rpx;
-					color: #00b2b6;
-					line-height: 32rpx;
-					// border: 1px #00b2b6 solid;
-					// font-size: 20rpx;
-					// width: 94rpx;
-					// display: flex;
-					// height: 36rpx;
-					// white-space: nowrap;
-					// justify-content: center;
-					// align-items: center;
-					// // padding: 4px 12px 4px 12px;
-					// border-radius: 5rpx;
-					// margin-right: 10rpx;
-					// color: #00b2b6;
-				}
-
-				text {
-					font-weight: bold;
-					overflow: hidden;
-					text-overflow: ellipsis;
-					white-space: nowrap;
-				}
-
-			}
-
-			.introduce {
-				// font-size: 28rpx;
-				color: #a7a7a7;
-				// padding: 20rpx 0;
-				// width: 560rpx;
-				height: 40rpx;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				white-space: nowrap;
-			}
-
-			.operate {
-				display: flex;
-				justify-content: space-between;
-				// align-items: baseline;
-				align-items: flex-end;
-
-				.left {
-					display: flex;
-					// justify-content: space-between;
-					// align-items: center;
-					align-items: baseline;
-
-					// width: 200rpx;
-					.opr {
-						display: flex;
-						align-items: center;
-
-						.icon {
-							width: 32rpx;
-							height: 32rpx;
-							display: flex;
-							justify-content: center;
-							align-items: center;
-						}
-
-						text {
-							padding-left: 3rpx;
-							color: #666666;
-						}
-					}
-
-					.pernum {
-						color: #666666;
-
-						// font-size: 30rpx;
-					}
-
-					.price {
-						// font-size: 40rpx;
-						font-weight: bold;
-						color: #f8a551;
-						padding-right: 10rpx;
-					}
-				}
-
-				.btn {
-					z-index: 5;
-					border: none;
-					padding: 0;
-					text-align: center;
-					// padding: 8px, 24px, 8px, 24px;
-					background-color: rgba(48, 129, 232, 1);
-					color: #fff;
-					border-radius: 100rpx;
-					float: right;
-					width: 144rpx;
-					height: 48rpx;
-					line-height: 48rpx;
-					letter-spacing: 1px;
-				}
-			}
-		}
-	}
-</style>

+ 0 - 60
components/viewX-Case/viewX-Case.vue

@@ -1,60 +0,0 @@
-<template>
-	<view class="view_x_case">
-		<view class="tit">
-			<view class="" >
-				<slot name="title"></slot>
-			</view>
-			<view class="" style="display: flex; align-items: center;">
-				<slot name="lookMore"></slot>
-				<!-- <text style="color:#999999;font-size: 14px;">查看更多</text> -->
-				<uni-icons type="forward" color="#ccc"></uni-icons>
-			</view>
-		</view>
-		
-		<!-- 首页精选活动类 -->
-		<scroll-view class="scroll-view_H" scroll-x="true" :enhanced="true" :show-scrollbar="false">
-			<slot name="activeBlock"></slot>
-		</scroll-view>
-		
-		<!-- 首页教研室活动类 -->
-		<!-- <scroll-view class="scroll-view_y" scroll-y="true"> -->
-			<slot name="teaching"></slot>
-		<!-- </scroll-view> -->
-	</view>
-</template>
-
-<script>
-	export default {
-		name:"view_x_case",
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style lang="scss">
-	.view_x_case{
-		width: 750rpx;
-		background-color: #fff;
-		// margin-bottom: 50rpx;
-		// padding-left: 25rpx;
-		.tit{
-			// margin-bottom: 15px;
-			display: flex;
-			justify-content: space-between;
-			align-items: baseline;
-			// padding-right: 25rpx;
-			padding: 40rpx 30rpx;
-			padding-bottom: 20rpx;
-		}
-		.scroll-view_H {
-			white-space: nowrap;
-			// margin-left: 20rpx;
-		}
-		.scroll-view_y{
-			// padding-right: 25rpx;
-		}
-	}
-</style>

+ 0 - 20
index.html

@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <script>
-      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
-        CSS.supports('top: constant(a)'))
-      document.write(
-        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
-        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
-    </script>
-    <title></title>
-    <!--preload-links-->
-    <!--app-context-->
-  </head>
-  <body>
-    <div id="app"><!--app-html--></div>
-    <script type="module" src="/main.js"></script>
-  </body>
-</html>

+ 0 - 22
main.js

@@ -1,22 +0,0 @@
-import App from './App'
-
-// #ifndef VUE3
-import Vue from 'vue'
-import './uni.promisify.adaptor'
-Vue.config.productionTip = false
-App.mpType = 'app'
-const app = new Vue({
-  ...App
-})
-app.$mount()
-// #endif
-
-// #ifdef VUE3
-import { createSSRApp } from 'vue'
-export function createApp() {
-  const app = createSSRApp(App)
-  return {
-    app
-  }
-}
-// #endif

+ 0 - 72
manifest.json

@@ -1,72 +0,0 @@
-{
-    "name" : "kklbWe",
-    "appid" : "__UNI__B46B675",
-    "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
-    "transformPx" : false,
-    /* 5+App特有相关 */
-    "app-plus" : {
-        "usingComponents" : true,
-        "nvueStyleCompiler" : "uni-app",
-        "compilerVersion" : 3,
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
-            "autoclose" : true,
-            "delay" : 0
-        },
-        /* 模块配置 */
-        "modules" : {},
-        /* 应用发布信息 */
-        "distribute" : {
-            /* android打包配置 */
-            "android" : {
-                "permissions" : [
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
-            },
-            /* ios打包配置 */
-            "ios" : {},
-            /* SDK配置 */
-            "sdkConfigs" : {}
-        }
-    },
-    /* 快应用特有相关 */
-    "quickapp" : {},
-    /* 小程序特有相关 */
-    "mp-weixin" : {
-        "appid" : "wxcb284ff05d9ea544",
-        "setting" : {
-            "urlCheck" : false
-        },
-        "usingComponents" : true
-    },
-    "mp-alipay" : {
-        "usingComponents" : true
-    },
-    "mp-baidu" : {
-        "usingComponents" : true
-    },
-    "mp-toutiao" : {
-        "usingComponents" : true
-    },
-    "uniStatistics" : {
-        "enable" : false
-    },
-    "vueVersion" : "2"
-}

+ 0 - 12
node_modules/.package-lock.json

@@ -1,12 +0,0 @@
-{
-  "name": "teaching-uniapp",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "node_modules/@dcloudio/uni-ui": {
-      "version": "1.4.28",
-      "resolved": "https://registry.npmmirror.com/@dcloudio/uni-ui/-/uni-ui-1.4.28.tgz",
-      "integrity": "sha512-e/lSbvR79KH9+d3D4ueNbvD6szigjO/5IyjBNmiTqaj0PTS324fBV3L6f3s1qpkYonM4rdOl000hVOcAg6Gh/A=="
-    }
-  }
-}

+ 0 - 202
node_modules/@dcloudio/uni-ui/LICENSE

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 245
node_modules/@dcloudio/uni-ui/README.md

@@ -1,245 +0,0 @@
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 
-
-## uni-ui产品特点
-
-### 1. 高性能
-
-目前为止,在小程序和混合app领域,暂时还没有比 `uni-ui` 更高性能的框架。
-- 自动差量更新数据
-
-虽然uni-app支持小程序自定义组件,所有小程序的ui库都可以用。但小程序自定义组件的ui库都需要使用setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。
-
-而 `uni-ui` 属于vue组件,uni-app引擎底层自动diff更新数据。当然其实插件市场里众多vue组件都具备这个特点。
-- 优化逻辑层和视图层通讯折损
-
-非H5,不管是小程序还是App,不管是app的webview渲染还是原生渲染,全都是逻辑层和视图层分离的。这里就有一个逻辑层和视图层通讯的折损问题。
-比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用js监听很难做到实时跟手。
-
-这时就需要使用css动画以及平台底层提供的wxs、bindingx等技术。不过这些技术都比较复杂,所以 `uni-ui` 里做了封装,在需要跟手式操作的ui组件,比如swiperaction列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验
-- 背景停止
-
-很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。
-
-而 `uni-ui` 的组件,会自动判断自己的显示状态,在组件不再可见时,不会再消耗硬件资源。
-
-### 2. 全端
-
- `uni-ui` 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。
-
-比如导航栏navbar组件,会自动处理不同端的状态栏。
-比如swiperaction组件,在app和微信小程序上会使用交互体验更好的wxs技术,但在不支持wxs的其他小程序端会使用js模拟类似效果。
-
- `uni-ui` 还支持nvue原生渲染,[详见](https://github.com/dcloudio/uni-ui/tree/nvue-uni-ui)
-
-未来 `uni-ui` 还会支持pc等大屏设备。
-
-### 3. 与uni统计自动集成实现免打点
-
-uni统计是优秀的多端统计平台,见[tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)。
-
-除了一张报表看全端,它的另一个重要特点是免打点。
-比如使用 `uni-ui` 的navbar标题栏、收藏、购物车等组件,均可实现自动打点,统计页面标题等各种行为数据。
-当然你也可以关闭uni统计,这不是强制的。
-
-### 4. 主题扩展
-
- `uni-ui` 支持[uni.scss](https://uniapp.dcloud.io/collocation/uni-scss),可以方便的切换App的风格。
-
-ui是一种需求非常发散的产品,DCloud官方也无意用 `uni-ui` 压制第三方ui插件的空间,但官方有义务在性能和多端方面提供一个开源的标杆给大家。
-
-我们欢迎更多优秀的ui组件出现,也欢迎更多人贡献 `uni-ui` 的主题风格,满足更多用户的需求。
-
-
-# 快速开始
-
-## 方式一:使用 uni_modules 安装(推荐)
-
-使用 `uni_modules` 方式安装组件库,可以直接通过插件市场导入,通过右键菜单快速更新组件,不需要引用、注册,直接在页面中使用 `uni-ui` 组件。[点击安装 uni-ui 组件库](https://ext.dcloud.net.cn/plugin?id=55)
-
-**注意:下载最新的组件目前仅支持 uni_modules ,非 uni_modules 版本最高支持到组件的1.2.10版本**
-
-如不能升级到 `uni_modules` 版本,可以使用 `uni_modules` 安装好对应组件,将组件拷贝到对应目录。
-
-例如需更新 `uni-list`和`uni-badge` ,将 `uni_modules>uni-list>components`和`uni_modules>uni-badege>components`下所有目录拷贝到如下目录即可:
-
-**目录示例**
-```json {2,3,4,5,6,7}
-┌─components              组件目录
-│  ├─uni-list             list 列表目录
-│  │  └─uni-list.vue      list 组件文件
-│  ├─uni-list-item        list-item 列表目录
-│  │  └─uni-list-item.vue list 组件文件
-│  ├─uni-badge         	  badge 角标目录
-│  │  └─uni-badge.vue     badge 组件文件
-│  └─ //....              更多组件文件
-├─pages                   业务页面文件存放的目录
-│  ├─index
-│  │  └─index.vue         index示例页面
-├─main.js                 Vue初始化入口文件
-├─App.vue                 应用配置,用来配置App全局样式以及监听 应用生命周期
-├─manifest.json           配置应用名称、appid、logo、版本等打包信息,详见
-└─pages.json              配置页
-
-```
-
-
-## 方式二:使用 npm 安装
-
-在 `vue-cli` 项目中可以使用 `npm` 安装 `uni-ui` 库 ,或者直接在 `HBuilderX` 项目中使用 `npm` 。(不推荐后一种方式)
-
-> **注意**
-> cli 项目默认是不编译 `node_modules` 下的组件的,导致条件编译等功能失效 ,导致组件异常
-> 需要在根目录创建 `vue.config.js` 文件 ,增加 `@dcloudio/uni-ui` 包的编译即可正常
-> ```javascript
-> // vue.config.js
-> module.exports = {
-> 		transpileDependencies:['@dcloudio/uni-ui']
-> }
-> ```
-
-
-
-**准备 sass**
-
-`vue-cli` 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。
-
-- 安装 sass
-```
- npm i sass -D   或   yarn add sass -D  
-```
-
-- 安装 sass-loader
-```
-npm i sass-loader@10.1.1 -D   或   yarn add sass-loader@10.1.1 -D
-```
-
-> sass-loader 请使用低于 @11.0.0 的版本,[sass-loader@11.0.0 不支持 vue@2.6.12 ](https://stackoverflow.com/questions/66082397/typeerror-this-getoptions-is-not-a-function)
-
-
-**安装 uni-ui**
-
-```
-npm i @dcloudio/uni-ui   或   yarn add @dcloudio/uni-ui
-```
-
-
-
-在 ``script`` 中引用组件:
-
-```javascript
-import {uniBadge} from '@dcloudio/uni-ui'
-//import uniBadge from '@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue' //也可使用此方式引入组件
-export default {
-    components: {uniBadge}
-}
-```
-
-
-在 ``template`` 中使用组件: 
-
-```html
-<uni-badge text="1"></uni-badge>
-<uni-badge text="2" type="success" @click="bindClick"></uni-badge>
-<uni-badge text="3" type="primary" :inverted="true"></uni-badge>
-```
-> **注意**
-> - `CLI` 引用方式, `H5` 端不支持在 `main.js` 中全局注册组件,如有需求请使用([easyCom](https://uniapp.dcloud.io/collocation/pages?id=easycom)) 的方式引用组件
-> - 使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 `vue.config.js` 解决:
-> ```javascript
-> // 在根目录创建 vue.config.js 文件,并配置如下
-> module.exports = {
-> 	transpileDependencies: ['@dcloudio/uni-ui']
-> }
-> ```
-
-
-## 使用 npm + easycom 
-
-使用 `npm` 安装好 `uni-ui` 之后,需要配置 `easycom` 规则,让 `npm` 安装的组件支持  `easycom`
-
-打开项目根目录下的 `pages.json` 并添加 `easycom` 节点:
-
-```javascript {8}
-// pages.json
-
-{
-	"easycom": {
-		"autoscan": true,
-		"custom": {
-			// uni-ui 规则如下配置
-			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
-		}
-	},
-	
-	// 其他内容
-	pages:[
-		// ...
-	]
-}
-
-```
-
-### uni-ui 已支持的组件列表
-|组件名|组件说明|
-|---|---|
-|uni-badge|[数字角标](https://ext.dcloud.net.cn/plugin?name=uni-badge)|
-|uni-breadcrumb|[面包屑](https://ext.dcloud.net.cn/plugin?name=uni-breadcrumb)|
-|uni-calendar|[日历](https://ext.dcloud.net.cn/plugin?name=uni-calendar)|
-|uni-card|[卡片](https://ext.dcloud.net.cn/plugin?name=uni-card)|
-|uni-collapse|[折叠面板](https://ext.dcloud.net.cn/plugin?name=uni-collapse)|
-|uni-combox|[组合框](https://ext.dcloud.net.cn/plugin?name=uni-combox)|
-|uni-countdown|[倒计时](https://ext.dcloud.net.cn/plugin?name=uni-countdown)|
-|uni-data-checkbox|[数据选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-checkbox)|
-|uni-data-picker|[数据驱动的picker选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-picker)|
-|uni-data-select|[下拉框选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-select)|
-|uni-dateformat|[日期格式化](https://ext.dcloud.net.cn/plugin?name=uni-dateformat)|
-|uni-datetime-picker|[日期选择器](https://ext.dcloud.net.cn/plugin?name=uni-datetime-picker)|
-|uni-drawer|[抽屉](https://ext.dcloud.net.cn/plugin?name=uni-drawer)|
-|uni-easyinput|[增强输入框](https://ext.dcloud.net.cn/plugin?name=uni-easyinput)|
-|uni-fab|[悬浮按钮](https://ext.dcloud.net.cn/plugin?name=uni-fab)|
-|uni-fav|[收藏按钮](https://ext.dcloud.net.cn/plugin?name=uni-fav)|
-|uni-file-picker|[文件选择上传](https://ext.dcloud.net.cn/plugin?name=uni-file-picker)|
-|uni-forms|[表单](https://ext.dcloud.net.cn/plugin?name=uni-forms)|
-|uni-goods-nav|[商品导航](https://ext.dcloud.net.cn/plugin?name=uni-goods-nav)|
-|uni-grid|[宫格](https://ext.dcloud.net.cn/plugin?name=uni-grid)|
-|uni-group|[分组](https://ext.dcloud.net.cn/plugin?name=uni-group)|
-|uni-icons|[图标](https://ext.dcloud.net.cn/plugin?name=uni-icons)|
-|uni-indexed-list|[索引列表](https://ext.dcloud.net.cn/plugin?name=uni-indexed-list)|
-|uni-link|[超链接](https://ext.dcloud.net.cn/plugin?name=uni-link)|
-|uni-list|[列表](https://ext.dcloud.net.cn/plugin?name=uni-list)|
-|uni-load-more|[加载更多](https://ext.dcloud.net.cn/plugin?name=uni-load-more)|
-|uni-nav-bar|[自定义导航栏](https://ext.dcloud.net.cn/plugin?name=uni-nav-bar)|
-|uni-notice-bar|[通告栏](https://ext.dcloud.net.cn/plugin?name=uni-notice-bar)|
-|uni-number-box|[数字输入框](https://ext.dcloud.net.cn/plugin?name=uni-number-box)|
-|uni-pagination|[分页器](https://ext.dcloud.net.cn/plugin?name=uni-pagination)|
-|uni-popup|[弹出层](https://ext.dcloud.net.cn/plugin?name=uni-popup)|
-|uni-rate|[评分](https://ext.dcloud.net.cn/plugin?name=uni-rate)|
-|uni-row|[布局-行](https://ext.dcloud.net.cn/plugin?name=uni-row)|
-|uni-scss|[辅助样式](https://ext.dcloud.net.cn/plugin?name=uni-scss)|
-|uni-search-bar|[搜索栏](https://ext.dcloud.net.cn/plugin?name=uni-search-bar)|
-|uni-section|[标题栏](https://ext.dcloud.net.cn/plugin?name=uni-section)|
-|uni-segmented-control|[分段器](https://ext.dcloud.net.cn/plugin?name=uni-segmented-control)|
-|uni-steps|[步骤条](https://ext.dcloud.net.cn/plugin?name=uni-steps)|
-|uni-swipe-action|[滑动操作](https://ext.dcloud.net.cn/plugin?name=uni-swipe-action)|
-|uni-swiper-dot|[轮播图指示点](https://ext.dcloud.net.cn/plugin?name=uni-swiper-dot)|
-|uni-table|[表格](https://ext.dcloud.net.cn/plugin?name=uni-table)|
-|uni-tag|[标签](https://ext.dcloud.net.cn/plugin?name=uni-tag)|
-|uni-title|[章节标题](https://ext.dcloud.net.cn/plugin?name=uni-title)|
-|uni-tooltip|[提示文字](https://ext.dcloud.net.cn/plugin?name=uni-tooltip)|
-|uni-transition|[过渡动画](https://ext.dcloud.net.cn/plugin?name=uni-transition)|
-
-
-### 其他
-
-- uni-ui 是全端兼容的基于flex布局的、无dom的ui库
-- uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。
-
-
-> **注意**
-> - `uni-ui` 不支持使用 `Vue.use()` 的方式安装
-
-
-
-### 贡献代码
-在使用 `uni-ui` 中,如遇到无法解决的问题,请提 [Issues](https://github.com/dcloudio/uni-ui/issues) 给我们,假如您有更好的点子或更好的实现方式,也欢迎给我们提交 [PR](https://github.com/dcloudio/uni-ui/pulls)

+ 0 - 268
node_modules/@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue

@@ -1,268 +0,0 @@
-<template>
-	<view class="uni-badge--x">
-		<slot />
-		<text v-if="text" :class="classNames" :style="[positionStyle, customStyle, dotStyle]"
-			class="uni-badge" @click="onClick()">{{displayValue}}</text>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Badge 数字角标
-	 * @description 数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=21
-	 * @property {String} text 角标内容
-	 * @property {String} size = [normal|small] 角标内容
-	 * @property {String} type = [info|primary|success|warning|error] 颜色类型
-	 * 	@value info 灰色
-	 * 	@value primary 蓝色
-	 * 	@value success 绿色
-	 * 	@value warning 黄色
-	 * 	@value error 红色
-	 * @property {String} inverted = [true|false] 是否无需背景颜色
-	 * @property {Number} maxNum 展示封顶的数字值,超过 99 显示 99+
-	 * @property {String} absolute = [rightTop|rightBottom|leftBottom|leftTop] 开启绝对定位, 角标将定位到其包裹的标签的四角上
-	 * 	@value rightTop 右上
-	 * 	@value rightBottom 右下
-	 * 	@value leftTop 左上
-	 * 	@value leftBottom 左下
-	 * @property {Array[number]} offset	距定位角中心点的偏移量,只有存在 absolute 属性时有效,例如:[-10, -10] 表示向外偏移 10px,[10, 10] 表示向 absolute 指定的内偏移 10px
-	 * @property {String} isDot = [true|false] 是否显示为一个小点
-	 * @event {Function} click 点击 Badge 触发事件
-	 * @example <uni-badge text="1"></uni-badge>
-	 */
-
-	export default {
-		name: 'UniBadge',
-		emits: ['click'],
-		props: {
-			type: {
-				type: String,
-				default: 'error'
-			},
-			inverted: {
-				type: Boolean,
-				default: false
-			},
-			isDot: {
-				type: Boolean,
-				default: false
-			},
-			maxNum: {
-				type: Number,
-				default: 99
-			},
-			absolute: {
-				type: String,
-				default: ''
-			},
-			offset: {
-				type: Array,
-				default () {
-					return [0, 0]
-				}
-			},
-			text: {
-				type: [String, Number],
-				default: ''
-			},
-			size: {
-				type: String,
-				default: 'small'
-			},
-			customStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			}
-		},
-		data() {
-			return {};
-		},
-		computed: {
-			width() {
-				return String(this.text).length * 8 + 12
-			},
-			classNames() {
-				const {
-					inverted,
-					type,
-					size,
-					absolute
-				} = this
-				return [
-					inverted ? 'uni-badge--' + type + '-inverted' : '',
-					'uni-badge--' + type,
-					'uni-badge--' + size,
-					absolute ? 'uni-badge--absolute' : ''
-				].join(' ')
-			},
-			positionStyle() {
-				if (!this.absolute) return {}
-				let w = this.width / 2,
-					h = 10
-				if (this.isDot) {
-					w = 5
-					h = 5
-				}
-				const x = `${- w  + this.offset[0]}px`
-				const y = `${- h + this.offset[1]}px`
-
-				const whiteList = {
-					rightTop: {
-						right: x,
-						top: y
-					},
-					rightBottom: {
-						right: x,
-						bottom: y
-					},
-					leftBottom: {
-						left: x,
-						bottom: y
-					},
-					leftTop: {
-						left: x,
-						top: y
-					}
-				}
-				const match = whiteList[this.absolute]
-				return match ? match : whiteList['rightTop']
-			},
-			dotStyle() {
-				if (!this.isDot) return {}
-				return {
-					width: '10px',
-					minWidth: '0',
-					height: '10px',
-					padding: '0',
-					borderRadius: '10px'
-				}
-			},
-			displayValue() {
-				const {
-					isDot,
-					text,
-					maxNum
-				} = this
-				return isDot ? '' : (Number(text) > maxNum ? `${maxNum}+` : text)
-			}
-		},
-		methods: {
-			onClick() {
-				this.$emit('click');
-			}
-		}
-	};
-</script>
-
-<style lang="scss" >
-	$uni-primary: #2979ff !default;
-	$uni-success: #4cd964 !default;
-	$uni-warning: #f0ad4e !default;
-	$uni-error: #dd524d !default;
-	$uni-info: #909399 !default;
-
-
-	$bage-size: 12px;
-	$bage-small: scale(0.8);
-
-	.uni-badge--x {
-		/* #ifdef APP-NVUE */
-		// align-self: flex-start;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		display: inline-block;
-		/* #endif */
-		position: relative;
-	}
-
-	.uni-badge--absolute {
-		position: absolute;
-	}
-
-	.uni-badge--small {
-		transform: $bage-small;
-		transform-origin: center center;
-	}
-
-	.uni-badge {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		overflow: hidden;
-		box-sizing: border-box;
-		font-feature-settings: "tnum";
-		min-width: 20px;
-		/* #endif */
-		justify-content: center;
-		flex-direction: row;
-		height: 20px;
-		padding: 0 4px;
-		line-height: 18px;
-		color: #fff;
-		border-radius: 100px;
-		background-color: $uni-info;
-		background-color: transparent;
-		border: 1px solid #fff;
-		text-align: center;
-		font-family: 'Helvetica Neue', Helvetica, sans-serif;
-		font-size: $bage-size;
-		/* #ifdef H5 */
-		z-index: 999;
-		cursor: pointer;
-		/* #endif */
-
-		&--info {
-			color: #fff;
-			background-color: $uni-info;
-		}
-
-		&--primary {
-			background-color: $uni-primary;
-		}
-
-		&--success {
-			background-color: $uni-success;
-		}
-
-		&--warning {
-			background-color: $uni-warning;
-		}
-
-		&--error {
-			background-color: $uni-error;
-		}
-
-		&--inverted {
-			padding: 0 5px 0 0;
-			color: $uni-info;
-		}
-
-		&--info-inverted {
-			color: $uni-info;
-			background-color: transparent;
-		}
-
-		&--primary-inverted {
-			color: $uni-primary;
-			background-color: transparent;
-		}
-
-		&--success-inverted {
-			color: $uni-success;
-			background-color: transparent;
-		}
-
-		&--warning-inverted {
-			color: $uni-warning;
-			background-color: transparent;
-		}
-
-		&--error-inverted {
-			color: $uni-error;
-			background-color: transparent;
-		}
-
-	}
-</style>

+ 0 - 121
node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb-item/uni-breadcrumb-item.vue

@@ -1,121 +0,0 @@
-<template>
-	<view class="uni-breadcrumb-item">
-		<view :class="{
-			'uni-breadcrumb-item--slot': true,
-			'uni-breadcrumb-item--slot-link': to && currentPage !== to
-			}" @click="navTo">
-			<slot />
-		</view>
-		<i v-if="separatorClass" class="uni-breadcrumb-item--separator" :class="separatorClass" />
-		<text v-else class="uni-breadcrumb-item--separator">{{ separator }}</text>
-	</view>
-</template>
-<script>
-	/**
-	 * BreadcrumbItem 面包屑导航子组件
-	 * @property {String/Object} to 路由跳转页面路径/对象
-	 * @property {Boolean} replace 在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持)
-	 */
-	export default {
-		data() {
-			return {
-				currentPage: ""
-			}
-		},
-		options: {
-			virtualHost: true
-		},
-		props: {
-			to: {
-				type: String,
-				default: ''
-			},
-			replace:{
-				type: Boolean,
-				default: false
-			}
-		},
-		inject: {
-			uniBreadcrumb: {
-				from: "uniBreadcrumb",
-				default: null
-			}
-		},
-		created(){
-			const pages = getCurrentPages()
-			const page = pages[pages.length-1]
-
-			if(page){
-				this.currentPage = `/${page.route}`
-			}
-		},
-		computed: {
-			separator() {
-				return this.uniBreadcrumb.separator
-			},
-			separatorClass() {
-				return this.uniBreadcrumb.separatorClass
-			}
-		},
-		methods: {
-			navTo() {
-				const { to } = this
-
-				if (!to || this.currentPage === to){
-					return
-				}
-
-				if(this.replace){
-					uni.redirectTo({
-						url:to
-					})
-				}else{
-					uni.navigateTo({
-						url:to
-					})
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss">
-	$uni-primary: #2979ff !default;
-	$uni-base-color: #6a6a6a !default;
-	$uni-main-color: #3a3a3a !default;
-	.uni-breadcrumb-item {
-		display: flex;
-		align-items: center;
-		white-space: nowrap;
-		font-size: 14px;
-
-		&--slot {
-			color: $uni-base-color;
-			padding: 0 10px;
-
-			&-link {
-				color: $uni-main-color;
-				font-weight: bold;
-				/* #ifndef APP-NVUE */
-				cursor: pointer;
-				/* #endif */
-
-				&:hover {
-					color: $uni-primary;
-				}
-			}
-		}
-
-		&--separator {
-			font-size: 12px;
-			color: $uni-base-color;
-		}
-
-		&:first-child &--slot {
-			padding-left: 0;
-		}
-		
-		&:last-child &--separator {
-			display: none;
-		}
-	}
-</style>

+ 0 - 41
node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb/uni-breadcrumb.vue

@@ -1,41 +0,0 @@
-<template>
-	<view class="uni-breadcrumb">
-		<slot />
-	</view>
-</template>
-<script>
-	/**
-	 * Breadcrumb 面包屑导航父组件
-	 * @description 显示当前页面的路径,快速返回之前的任意页面
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=xxx
-	 * @property {String} separator 分隔符,默认为斜杠'/'
-	 * @property {String} separatorClass 图标分隔符 class
-	 */
-	export default {
-		options: {
-			virtualHost: true
-		},
-		props: {
-			separator: {
-				type: String,
-				default: '/'
-			},
-			separatorClass: {
-				type: String,
-				default: ''
-			}
-		},
-
-		provide() {
-			return {
-				uniBreadcrumb: this
-			}
-		}
-
-	}
-</script>
-<style lang="scss">
-	.uni-breadcrumb {
-		display: flex;
-	}
-</style>

+ 0 - 546
node_modules/@dcloudio/uni-ui/lib/uni-calendar/calendar.js

@@ -1,546 +0,0 @@
-/**
-* @1900-2100区间内的公历、农历互转
-* @charset UTF-8
-* @github  https://github.com/jjonline/calendar.js
-* @Author  Jea杨(JJonline@JJonline.Cn)
-* @Time    2014-7-21
-* @Time    2016-8-13 Fixed 2033hex、Attribution Annals
-* @Time    2016-9-25 Fixed lunar LeapMonth Param Bug
-* @Time    2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
-* @Version 1.0.3
-* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
-* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
-*/
-/* eslint-disable */
-var calendar = {
-
-  /**
-      * 农历1900-2100的润大小信息表
-      * @Array Of Property
-      * @return Hex
-      */
-  lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
-    0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
-    0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
-    0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
-    0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
-    0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
-    0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
-    0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
-    0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
-    0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
-    0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
-    0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
-    0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
-    0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
-    0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
-    /** Add By JJonline@JJonline.Cn**/
-    0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
-    0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
-    0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
-    0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
-    0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
-    0x0d520], // 2100
-
-  /**
-      * 公历每个月份的天数普通表
-      * @Array Of Property
-      * @return Number
-      */
-  solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
-
-  /**
-      * 天干地支之天干速查表
-      * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
-      * @return Cn string
-      */
-  Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
-
-  /**
-      * 天干地支之地支速查表
-      * @Array Of Property
-      * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
-      * @return Cn string
-      */
-  Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
-
-  /**
-      * 天干地支之地支速查表<=>生肖
-      * @Array Of Property
-      * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
-      * @return Cn string
-      */
-  Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
-
-  /**
-      * 24节气速查表
-      * @Array Of Property
-      * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
-      * @return Cn string
-      */
-  solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
-
-  /**
-      * 1900-2100各年的24节气日期速查表
-      * @Array Of Property
-      * @return 0x string For splice
-      */
-  sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
-    '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
-    '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
-    '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
-    'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
-    '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
-    '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
-    '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
-    '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
-    '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
-    '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
-    '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
-    '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
-    '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
-    '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
-    '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
-    '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
-    '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
-    '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
-    '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
-    '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
-    '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
-    '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
-    '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
-    '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
-    '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
-    '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
-    '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
-    '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
-    '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
-    '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
-    '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
-    '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
-    '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
-    '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
-    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
-    '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
-    '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
-    '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
-    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
-    '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
-    '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
-    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
-    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
-    '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
-    '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
-    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
-    '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
-    '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
-    '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
-    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
-    '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
-    '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
-    '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
-    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
-    '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
-    '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
-    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
-    '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
-    '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
-    '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
-    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
-    '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
-    '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
-    '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
-    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
-    '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
-
-  /**
-      * 数字转中文速查表
-      * @Array Of Property
-      * @trans ['日','一','二','三','四','五','六','七','八','九','十']
-      * @return Cn string
-      */
-  nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
-
-  /**
-      * 日期转农历称呼速查表
-      * @Array Of Property
-      * @trans ['初','十','廿','卅']
-      * @return Cn string
-      */
-  nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
-
-  /**
-      * 月份转农历称呼速查表
-      * @Array Of Property
-      * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
-      * @return Cn string
-      */
-  nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
-
-  /**
-      * 返回农历y年一整年的总天数
-      * @param lunar Year
-      * @return Number
-      * @eg:var count = calendar.lYearDays(1987) ;//count=387
-      */
-  lYearDays: function (y) {
-    var i; var sum = 348
-    for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
-    return (sum + this.leapDays(y))
-  },
-
-  /**
-      * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
-      * @param lunar Year
-      * @return Number (0-12)
-      * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
-      */
-  leapMonth: function (y) { // 闰字编码 \u95f0
-    return (this.lunarInfo[y - 1900] & 0xf)
-  },
-
-  /**
-      * 返回农历y年闰月的天数 若该年没有闰月则返回0
-      * @param lunar Year
-      * @return Number (0、29、30)
-      * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
-      */
-  leapDays: function (y) {
-    if (this.leapMonth(y)) {
-      return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
-    }
-    return (0)
-  },
-
-  /**
-      * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
-      * @param lunar Year
-      * @return Number (-1、29、30)
-      * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
-      */
-  monthDays: function (y, m) {
-    if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
-    return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
-  },
-
-  /**
-      * 返回公历(!)y年m月的天数
-      * @param solar Year
-      * @return Number (-1、28、29、30、31)
-      * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
-      */
-  solarDays: function (y, m) {
-    if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
-    var ms = m - 1
-    if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
-      return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
-    } else {
-      return (this.solarMonth[ms])
-    }
-  },
-
-  /**
-     * 农历年份转换为干支纪年
-     * @param  lYear 农历年的年份数
-     * @return Cn string
-     */
-  toGanZhiYear: function (lYear) {
-    var ganKey = (lYear - 3) % 10
-    var zhiKey = (lYear - 3) % 12
-    if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
-    if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
-    return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
-  },
-
-  /**
-     * 公历月、日判断所属星座
-     * @param  cMonth [description]
-     * @param  cDay [description]
-     * @return Cn string
-     */
-  toAstro: function (cMonth, cDay) {
-    var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
-    var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
-    return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
-  },
-
-  /**
-      * 传入offset偏移量返回干支
-      * @param offset 相对甲子的偏移量
-      * @return Cn string
-      */
-  toGanZhi: function (offset) {
-    return this.Gan[offset % 10] + this.Zhi[offset % 12]
-  },
-
-  /**
-      * 传入公历(!)y年获得该年第n个节气的公历日期
-      * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
-      * @return day Number
-      * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
-      */
-  getTerm: function (y, n) {
-    if (y < 1900 || y > 2100) { return -1 }
-    if (n < 1 || n > 24) { return -1 }
-    var _table = this.sTermInfo[y - 1900]
-    var _info = [
-      parseInt('0x' + _table.substr(0, 5)).toString(),
-      parseInt('0x' + _table.substr(5, 5)).toString(),
-      parseInt('0x' + _table.substr(10, 5)).toString(),
-      parseInt('0x' + _table.substr(15, 5)).toString(),
-      parseInt('0x' + _table.substr(20, 5)).toString(),
-      parseInt('0x' + _table.substr(25, 5)).toString()
-    ]
-    var _calday = [
-      _info[0].substr(0, 1),
-      _info[0].substr(1, 2),
-      _info[0].substr(3, 1),
-      _info[0].substr(4, 2),
-
-      _info[1].substr(0, 1),
-      _info[1].substr(1, 2),
-      _info[1].substr(3, 1),
-      _info[1].substr(4, 2),
-
-      _info[2].substr(0, 1),
-      _info[2].substr(1, 2),
-      _info[2].substr(3, 1),
-      _info[2].substr(4, 2),
-
-      _info[3].substr(0, 1),
-      _info[3].substr(1, 2),
-      _info[3].substr(3, 1),
-      _info[3].substr(4, 2),
-
-      _info[4].substr(0, 1),
-      _info[4].substr(1, 2),
-      _info[4].substr(3, 1),
-      _info[4].substr(4, 2),
-
-      _info[5].substr(0, 1),
-      _info[5].substr(1, 2),
-      _info[5].substr(3, 1),
-      _info[5].substr(4, 2)
-    ]
-    return parseInt(_calday[n - 1])
-  },
-
-  /**
-      * 传入农历数字月份返回汉语通俗表示法
-      * @param lunar month
-      * @return Cn string
-      * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
-      */
-  toChinaMonth: function (m) { // 月 => \u6708
-    if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
-    var s = this.nStr3[m - 1]
-    s += '\u6708'// 加上月字
-    return s
-  },
-
-  /**
-      * 传入农历日期数字返回汉字表示法
-      * @param lunar day
-      * @return Cn string
-      * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
-      */
-  toChinaDay: function (d) { // 日 => \u65e5
-    var s
-    switch (d) {
-      case 10:
-        s = '\u521d\u5341'; break
-      case 20:
-        s = '\u4e8c\u5341'; break
-        break
-      case 30:
-        s = '\u4e09\u5341'; break
-        break
-      default :
-        s = this.nStr2[Math.floor(d / 10)]
-        s += this.nStr1[d % 10]
-    }
-    return (s)
-  },
-
-  /**
-      * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
-      * @param y year
-      * @return Cn string
-      * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
-      */
-  getAnimal: function (y) {
-    return this.Animals[(y - 4) % 12]
-  },
-
-  /**
-      * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
-      * @param y  solar year
-      * @param m  solar month
-      * @param d  solar day
-      * @return JSON object
-      * @eg:console.log(calendar.solar2lunar(1987,11,01));
-      */
-  solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
-    // 年份限定、上限
-    if (y < 1900 || y > 2100) {
-      return -1// undefined转换为数字变为NaN
-    }
-    // 公历传参最下限
-    if (y == 1900 && m == 1 && d < 31) {
-      return -1
-    }
-    // 未传参  获得当天
-    if (!y) {
-      var objDate = new Date()
-    } else {
-      var objDate = new Date(y, parseInt(m) - 1, d)
-    }
-    var i; var leap = 0; var temp = 0
-    // 修正ymd参数
-    var y = objDate.getFullYear()
-    var m = objDate.getMonth() + 1
-    var d = objDate.getDate()
-    var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
-    for (i = 1900; i < 2101 && offset > 0; i++) {
-      temp = this.lYearDays(i)
-      offset -= temp
-    }
-    if (offset < 0) {
-      offset += temp; i--
-    }
-
-    // 是否今天
-    var isTodayObj = new Date()
-    var isToday = false
-    if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
-      isToday = true
-    }
-    // 星期几
-    var nWeek = objDate.getDay()
-    var cWeek = this.nStr1[nWeek]
-    // 数字表示周几顺应天朝周一开始的惯例
-    if (nWeek == 0) {
-      nWeek = 7
-    }
-    // 农历年
-    var year = i
-    var leap = this.leapMonth(i) // 闰哪个月
-    var isLeap = false
-
-    // 效验闰月
-    for (i = 1; i < 13 && offset > 0; i++) {
-      // 闰月
-      if (leap > 0 && i == (leap + 1) && isLeap == false) {
-        --i
-        isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
-      } else {
-        temp = this.monthDays(year, i)// 计算农历普通月天数
-      }
-      // 解除闰月
-      if (isLeap == true && i == (leap + 1)) { isLeap = false }
-      offset -= temp
-    }
-    // 闰月导致数组下标重叠取反
-    if (offset == 0 && leap > 0 && i == leap + 1) {
-      if (isLeap) {
-        isLeap = false
-      } else {
-        isLeap = true; --i
-      }
-    }
-    if (offset < 0) {
-      offset += temp; --i
-    }
-    // 农历月
-    var month = i
-    // 农历日
-    var day = offset + 1
-    // 天干地支处理
-    var sm = m - 1
-    var gzY = this.toGanZhiYear(year)
-
-    // 当月的两个节气
-    // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
-    var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
-    var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
-
-    // 依据12节气修正干支月
-    var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
-    if (d >= firstNode) {
-      gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
-    }
-
-    // 传入的日期的节气与否
-    var isTerm = false
-    var Term = null
-    if (firstNode == d) {
-      isTerm = true
-      Term = this.solarTerm[m * 2 - 2]
-    }
-    if (secondNode == d) {
-      isTerm = true
-      Term = this.solarTerm[m * 2 - 1]
-    }
-    // 日柱 当月一日与 1900/1/1 相差天数
-    var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
-    var gzD = this.toGanZhi(dayCyclical + d - 1)
-    // 该日期所属的星座
-    var astro = this.toAstro(m, d)
-
-    return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
-  },
-
-  /**
-      * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
-      * @param y  lunar year
-      * @param m  lunar month
-      * @param d  lunar day
-      * @param isLeapMonth  lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
-      * @return JSON object
-      * @eg:console.log(calendar.lunar2solar(1987,9,10));
-      */
-  lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
-    var isLeapMonth = !!isLeapMonth
-    var leapOffset = 0
-    var leapMonth = this.leapMonth(y)
-    var leapDay = this.leapDays(y)
-    if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
-    if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
-    var day = this.monthDays(y, m)
-    var _day = day
-    // bugFix 2016-9-25
-    // if month is leap, _day use leapDays method
-    if (isLeapMonth) {
-      _day = this.leapDays(y, m)
-    }
-    if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
-
-    // 计算农历的时间差
-    var offset = 0
-    for (var i = 1900; i < y; i++) {
-      offset += this.lYearDays(i)
-    }
-    var leap = 0; var isAdd = false
-    for (var i = 1; i < m; i++) {
-      leap = this.leapMonth(y)
-      if (!isAdd) { // 处理闰月
-        if (leap <= i && leap > 0) {
-          offset += this.leapDays(y); isAdd = true
-        }
-      }
-      offset += this.monthDays(y, i)
-    }
-    // 转换闰月农历 需补充该年闰月的前一个月的时差
-    if (isLeapMonth) { offset += day }
-    // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
-    var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
-    var calObj = new Date((offset + d - 31) * 86400000 + stmap)
-    var cY = calObj.getUTCFullYear()
-    var cM = calObj.getUTCMonth() + 1
-    var cD = calObj.getUTCDate()
-
-    return this.solar2lunar(cY, cM, cD)
-  }
-}
-
-export default calendar

+ 0 - 12
node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/en.json

@@ -1,12 +0,0 @@
-{
-	"uni-calender.ok": "ok",
-	"uni-calender.cancel": "cancel",
-	"uni-calender.today": "today",
-	"uni-calender.MON": "MON",
-	"uni-calender.TUE": "TUE",
-	"uni-calender.WED": "WED",
-	"uni-calender.THU": "THU",
-	"uni-calender.FRI": "FRI",
-	"uni-calender.SAT": "SAT",
-	"uni-calender.SUN": "SUN"
-}

+ 0 - 8
node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 12
node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hans.json

@@ -1,12 +0,0 @@
-{
-	"uni-calender.ok": "确定",
-	"uni-calender.cancel": "取消",
-	"uni-calender.today": "今日",
-	"uni-calender.SUN": "日",
-	"uni-calender.MON": "一",
-	"uni-calender.TUE": "二",
-	"uni-calender.WED": "三",
-	"uni-calender.THU": "四",
-	"uni-calender.FRI": "五",
-	"uni-calender.SAT": "六"
-}

+ 0 - 12
node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hant.json

@@ -1,12 +0,0 @@
-{
-	"uni-calender.ok": "確定",
-	"uni-calender.cancel": "取消",
-	"uni-calender.today": "今日",
-	"uni-calender.SUN": "日",
-	"uni-calender.MON": "一",
-	"uni-calender.TUE": "二",
-	"uni-calender.WED": "三",
-	"uni-calender.THU": "四",
-	"uni-calender.FRI": "五",
-	"uni-calender.SAT": "六"
-}

+ 0 - 187
node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar-item.vue

@@ -1,187 +0,0 @@
-<template>
-	<view class="uni-calendar-item__weeks-box" :class="{
-		'uni-calendar-item--disable':weeks.disable,
-		'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
-		'uni-calendar-item--checked':(calendar.fullDate === weeks.fullDate && !weeks.isDay) ,
-		'uni-calendar-item--before-checked':weeks.beforeMultiple,
-		'uni-calendar-item--multiple': weeks.multiple,
-		'uni-calendar-item--after-checked':weeks.afterMultiple,
-		}"
-	 @click="choiceDate(weeks)">
-		<view class="uni-calendar-item__weeks-box-item">
-			<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
-			<text class="uni-calendar-item__weeks-box-text" :class="{
-				'uni-calendar-item--isDay-text': weeks.isDay,
-				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
-				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
-				'uni-calendar-item--before-checked':weeks.beforeMultiple,
-				'uni-calendar-item--multiple': weeks.multiple,
-				'uni-calendar-item--after-checked':weeks.afterMultiple,
-				'uni-calendar-item--disable':weeks.disable,
-				}">{{weeks.date}}</text>
-			<text v-if="!lunar&&!weeks.extraInfo && weeks.isDay" class="uni-calendar-item__weeks-lunar-text" :class="{
-				'uni-calendar-item--isDay-text':weeks.isDay,
-				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
-				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
-				'uni-calendar-item--before-checked':weeks.beforeMultiple,
-				'uni-calendar-item--multiple': weeks.multiple,
-				'uni-calendar-item--after-checked':weeks.afterMultiple,
-				}">{{todayText}}</text>
-			<text v-if="lunar&&!weeks.extraInfo" class="uni-calendar-item__weeks-lunar-text" :class="{
-				'uni-calendar-item--isDay-text':weeks.isDay,
-				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
-				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
-				'uni-calendar-item--before-checked':weeks.beforeMultiple,
-				'uni-calendar-item--multiple': weeks.multiple,
-				'uni-calendar-item--after-checked':weeks.afterMultiple,
-				'uni-calendar-item--disable':weeks.disable,
-				}">{{weeks.isDay ? todayText : (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}</text>
-			<text v-if="weeks.extraInfo&&weeks.extraInfo.info" class="uni-calendar-item__weeks-lunar-text" :class="{
-				'uni-calendar-item--extra':weeks.extraInfo.info,
-				'uni-calendar-item--isDay-text':weeks.isDay,
-				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
-				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
-				'uni-calendar-item--before-checked':weeks.beforeMultiple,
-				'uni-calendar-item--multiple': weeks.multiple,
-				'uni-calendar-item--after-checked':weeks.afterMultiple,
-				'uni-calendar-item--disable':weeks.disable,
-				}">{{weeks.extraInfo.info}}</text>
-		</view>
-	</view>
-</template>
-
-<script>
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const {	t	} = initVueI18n(i18nMessages)
-
-	export default {
-		emits:['change'],
-		props: {
-			weeks: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			calendar: {
-				type: Object,
-				default: () => {
-					return {}
-				}
-			},
-			selected: {
-				type: Array,
-				default: () => {
-					return []
-				}
-			},
-			lunar: {
-				type: Boolean,
-				default: false
-			}
-		},
-		computed: {
-			todayText() {
-				return t("uni-calender.today")
-			},
-		},
-		methods: {
-			choiceDate(weeks) {
-				this.$emit('change', weeks)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	$uni-font-size-base:14px;
-	$uni-text-color:#333;
-	$uni-font-size-sm:12px;
-	$uni-color-error: #e43d33;
-	$uni-opacity-disabled: 0.3;
-	$uni-text-color-disable:#c0c0c0;
-	$uni-primary: #2979ff !default;
-	.uni-calendar-item__weeks-box {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.uni-calendar-item__weeks-box-text {
-		font-size: $uni-font-size-base;
-		color: $uni-text-color;
-	}
-
-	.uni-calendar-item__weeks-lunar-text {
-		font-size: $uni-font-size-sm;
-		color: $uni-text-color;
-	}
-
-	.uni-calendar-item__weeks-box-item {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		width: 100rpx;
-		height: 100rpx;
-	}
-
-	.uni-calendar-item__weeks-box-circle {
-		position: absolute;
-		top: 5px;
-		right: 5px;
-		width: 8px;
-		height: 8px;
-		border-radius: 8px;
-		background-color: $uni-color-error;
-
-	}
-
-	.uni-calendar-item--disable {
-		background-color: rgba(249, 249, 249, $uni-opacity-disabled);
-		color: $uni-text-color-disable;
-	}
-
-	.uni-calendar-item--isDay-text {
-		color: $uni-primary;
-	}
-
-	.uni-calendar-item--isDay {
-		background-color: $uni-primary;
-		opacity: 0.8;
-		color: #fff;
-	}
-
-	.uni-calendar-item--extra {
-		color: $uni-color-error;
-		opacity: 0.8;
-	}
-
-	.uni-calendar-item--checked {
-		background-color: $uni-primary;
-		color: #fff;
-		opacity: 0.8;
-	}
-
-	.uni-calendar-item--multiple {
-		background-color: $uni-primary;
-		color: #fff;
-		opacity: 0.8;
-	}
-	.uni-calendar-item--before-checked {
-		background-color: #ff5a5f;
-		color: #fff;
-	}
-	.uni-calendar-item--after-checked {
-		background-color: #ff5a5f;
-		color: #fff;
-	}
-</style>

+ 0 - 566
node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar.vue

@@ -1,566 +0,0 @@
-<template>
-	<view class="uni-calendar">
-		<view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}" @click="clean"></view>
-		<view v-if="insert || show" class="uni-calendar__content" :class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow}">
-			<view v-if="!insert" class="uni-calendar__header uni-calendar--fixed-top">
-				<view class="uni-calendar__header-btn-box" @click="close">
-					<text class="uni-calendar__header-text uni-calendar--fixed-width">{{cancelText}}</text>
-				</view>
-				<view class="uni-calendar__header-btn-box" @click="confirm">
-					<text class="uni-calendar__header-text uni-calendar--fixed-width">{{okText}}</text>
-				</view>
-			</view>
-			<view class="uni-calendar__header">
-				<view class="uni-calendar__header-btn-box" @click.stop="pre">
-					<view class="uni-calendar__header-btn uni-calendar--left"></view>
-				</view>
-				<picker mode="date" :value="date" fields="month" @change="bindDateChange">
-					<text class="uni-calendar__header-text">{{ (nowDate.year||'') +' / '+( nowDate.month||'')}}</text>
-				</picker>
-				<view class="uni-calendar__header-btn-box" @click.stop="next">
-					<view class="uni-calendar__header-btn uni-calendar--right"></view>
-				</view>
-				<text class="uni-calendar__backtoday" @click="backToday">{{todayText}}</text>
-
-			</view>
-			<view class="uni-calendar__box">
-				<view v-if="showMonth" class="uni-calendar__box-bg">
-					<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
-				</view>
-				<view class="uni-calendar__weeks">
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{SUNText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{monText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{TUEText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{WEDText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{THUText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{FRIText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{SATText}}</text>
-					</view>
-				</view>
-				<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
-					<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
-						<calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar" :selected="selected" :lunar="lunar" @change="choiceDate"></calendar-item>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import Calendar from './util.js';
-	import CalendarItem from './uni-calendar-item.vue'
-
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const {	t	} = initVueI18n(i18nMessages)
-
-	/**
-	 * Calendar 日历
-	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=56
-	 * @property {String} date 自定义当前时间,默认为今天
-	 * @property {Boolean} lunar 显示农历
-	 * @property {String} startDate 日期选择范围-开始日期
-	 * @property {String} endDate 日期选择范围-结束日期
-	 * @property {Boolean} range 范围选择
-	 * @property {Boolean} insert = [true|false] 插入模式,默认为false
-	 * 	@value true 弹窗模式
-	 * 	@value false 插入模式
-	 * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
-	 * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
-	 * @property {Boolean} showMonth 是否选择月份为背景
-	 * @event {Function} change 日期改变,`insert :ture` 时生效
-	 * @event {Function} confirm 确认选择`insert :false` 时生效
-	 * @event {Function} monthSwitch 切换月份时触发
-	 * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
-	 */
-	export default {
-		components: {
-			CalendarItem
-		},
-		emits:['close','confirm','change','monthSwitch'],
-		props: {
-			date: {
-				type: String,
-				default: ''
-			},
-			selected: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			lunar: {
-				type: Boolean,
-				default: false
-			},
-			startDate: {
-				type: String,
-				default: ''
-			},
-			endDate: {
-				type: String,
-				default: ''
-			},
-			range: {
-				type: Boolean,
-				default: false
-			},
-			insert: {
-				type: Boolean,
-				default: true
-			},
-			showMonth: {
-				type: Boolean,
-				default: true
-			},
-			clearDate: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				show: false,
-				weeks: [],
-				calendar: {},
-				nowDate: '',
-				aniMaskShow: false
-			}
-		},
-		computed:{
-			/**
-			 * for i18n
-			 */
-
-			okText() {
-				return t("uni-calender.ok")
-			},
-			cancelText() {
-				return t("uni-calender.cancel")
-			},
-			todayText() {
-				return t("uni-calender.today")
-			},
-			monText() {
-				return t("uni-calender.MON")
-			},
-			TUEText() {
-				return t("uni-calender.TUE")
-			},
-			WEDText() {
-				return t("uni-calender.WED")
-			},
-			THUText() {
-				return t("uni-calender.THU")
-			},
-			FRIText() {
-				return t("uni-calender.FRI")
-			},
-			SATText() {
-				return t("uni-calender.SAT")
-			},
-			SUNText() {
-				return t("uni-calender.SUN")
-			},
-		},
-		watch: {
-			date(newVal) {
-				// this.cale.setDate(newVal)
-				this.init(newVal)
-			},
-			startDate(val){
-				this.cale.resetSatrtDate(val)
-				this.cale.setDate(this.nowDate.fullDate)
-				this.weeks = this.cale.weeks
-			},
-			endDate(val){
-				this.cale.resetEndDate(val)
-				this.cale.setDate(this.nowDate.fullDate)
-				this.weeks = this.cale.weeks
-			},
-			selected(newVal) {
-				this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
-				this.weeks = this.cale.weeks
-			}
-		},
-		created() {
-			this.cale = new Calendar({
-				selected: this.selected,
-				startDate: this.startDate,
-				endDate: this.endDate,
-				range: this.range,
-			})
-			this.init(this.date)
-		},
-		methods: {
-			// 取消穿透
-			clean() {},
-			bindDateChange(e) {
-				const value = e.detail.value + '-1'
-				this.setDate(value)
-
-				const { year,month } = this.cale.getDate(value)
-        this.$emit('monthSwitch', {
-            year,
-            month
-        })
-			},
-			/**
-			 * 初始化日期显示
-			 * @param {Object} date
-			 */
-			init(date) {
-				this.cale.setDate(date)
-				this.weeks = this.cale.weeks
-				this.nowDate = this.calendar = this.cale.getInfo(date)
-			},
-			/**
-			 * 打开日历弹窗
-			 */
-			open() {
-				// 弹窗模式并且清理数据
-				if (this.clearDate && !this.insert) {
-					this.cale.cleanMultipleStatus()
-					// this.cale.setDate(this.date)
-					this.init(this.date)
-				}
-				this.show = true
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this.aniMaskShow = true
-					}, 50)
-				})
-			},
-			/**
-			 * 关闭日历弹窗
-			 */
-			close() {
-				this.aniMaskShow = false
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this.show = false
-						this.$emit('close')
-					}, 300)
-				})
-			},
-			/**
-			 * 确认按钮
-			 */
-			confirm() {
-				this.setEmit('confirm')
-				this.close()
-			},
-			/**
-			 * 变化触发
-			 */
-			change() {
-				if (!this.insert) return
-				this.setEmit('change')
-			},
-			/**
-			 * 选择月份触发
-			 */
-			monthSwitch() {
-				let {
-					year,
-					month
-				} = this.nowDate
-				this.$emit('monthSwitch', {
-					year,
-					month: Number(month)
-				})
-			},
-			/**
-			 * 派发事件
-			 * @param {Object} name
-			 */
-			setEmit(name) {
-				let {
-					year,
-					month,
-					date,
-					fullDate,
-					lunar,
-					extraInfo
-				} = this.calendar
-				this.$emit(name, {
-					range: this.cale.multipleStatus,
-					year,
-					month,
-					date,
-					fulldate: fullDate,
-					lunar,
-					extraInfo: extraInfo || {}
-				})
-			},
-			/**
-			 * 选择天触发
-			 * @param {Object} weeks
-			 */
-			choiceDate(weeks) {
-				if (weeks.disable) return
-				this.calendar = weeks
-				// 设置多选
-				this.cale.setMultiple(this.calendar.fullDate)
-				this.weeks = this.cale.weeks
-				this.change()
-			},
-			/**
-			 * 回到今天
-			 */
-			backToday() {
-				const nowYearMonth = `${this.nowDate.year}-${this.nowDate.month}`
-				const date = this.cale.getDate(new Date())
-        const todayYearMonth = `${date.year}-${date.month}`
-
-        if(nowYearMonth !== todayYearMonth) {
-          this.monthSwitch()
-        }
-
-				this.init(date.fullDate)
-				this.change()
-			},
-			/**
-			 * 上个月
-			 */
-			pre() {
-				const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
-				this.setDate(preDate)
-				this.monthSwitch()
-
-			},
-			/**
-			 * 下个月
-			 */
-			next() {
-				const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
-				this.setDate(nextDate)
-				this.monthSwitch()
-			},
-			/**
-			 * 设置日期
-			 * @param {Object} date
-			 */
-			setDate(date) {
-				this.cale.setDate(date)
-				this.weeks = this.cale.weeks
-				this.nowDate = this.cale.getInfo(date)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	$uni-bg-color-mask: rgba($color: #000000, $alpha: 0.4);
-	$uni-border-color: #EDEDED;
-	$uni-text-color: #333;
-	$uni-bg-color-hover:#f1f1f1;
-	$uni-font-size-base:14px;
-	$uni-text-color-placeholder: #808080;
-	$uni-color-subtitle: #555555;
-	$uni-text-color-grey:#999;
-	.uni-calendar {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-calendar__mask {
-		position: fixed;
-		bottom: 0;
-		top: 0;
-		left: 0;
-		right: 0;
-		background-color: $uni-bg-color-mask;
-		transition-property: opacity;
-		transition-duration: 0.3s;
-		opacity: 0;
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-calendar--mask-show {
-		opacity: 1
-	}
-
-	.uni-calendar--fixed {
-		position: fixed;
-		/* #ifdef APP-NVUE */
-		bottom: 0;
-		/* #endif */
-		left: 0;
-		right: 0;
-		transition-property: transform;
-		transition-duration: 0.3s;
-		transform: translateY(460px);
-		/* #ifndef APP-NVUE */
-		bottom: calc(var(--window-bottom));
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-calendar--ani-show {
-		transform: translateY(0);
-	}
-
-	.uni-calendar__content {
-		background-color: #fff;
-	}
-
-	.uni-calendar__header {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 50px;
-		border-bottom-color: $uni-border-color;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-	}
-
-	.uni-calendar--fixed-top {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		border-top-color: $uni-border-color;
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-calendar--fixed-width {
-		width: 50px;
-	}
-
-	.uni-calendar__backtoday {
-		position: absolute;
-		right: 0;
-		top: 25rpx;
-		padding: 0 5px;
-		padding-left: 10px;
-		height: 25px;
-		line-height: 25px;
-		font-size: 12px;
-		border-top-left-radius: 25px;
-		border-bottom-left-radius: 25px;
-		color: $uni-text-color;
-		background-color: $uni-bg-color-hover;
-	}
-
-	.uni-calendar__header-text {
-		text-align: center;
-		width: 100px;
-		font-size: $uni-font-size-base;
-		color: $uni-text-color;
-	}
-
-	.uni-calendar__header-btn-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		width: 50px;
-		height: 50px;
-	}
-
-	.uni-calendar__header-btn {
-		width: 10px;
-		height: 10px;
-		border-left-color: $uni-text-color-placeholder;
-		border-left-style: solid;
-		border-left-width: 2px;
-		border-top-color: $uni-color-subtitle;
-		border-top-style: solid;
-		border-top-width: 2px;
-	}
-
-	.uni-calendar--left {
-		transform: rotate(-45deg);
-	}
-
-	.uni-calendar--right {
-		transform: rotate(135deg);
-	}
-
-
-	.uni-calendar__weeks {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-calendar__weeks-item {
-		flex: 1;
-	}
-
-	.uni-calendar__weeks-day {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		height: 45px;
-		border-bottom-color: #F5F5F5;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-	}
-
-	.uni-calendar__weeks-day-text {
-		font-size: 14px;
-	}
-
-	.uni-calendar__box {
-		position: relative;
-	}
-
-	.uni-calendar__box-bg {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-	}
-
-	.uni-calendar__box-bg-text {
-		font-size: 200px;
-		font-weight: bold;
-		color: $uni-text-color-grey;
-		opacity: 0.1;
-		text-align: center;
-		/* #ifndef APP-NVUE */
-		line-height: 1;
-		/* #endif */
-	}
-</style>

+ 0 - 360
node_modules/@dcloudio/uni-ui/lib/uni-calendar/util.js

@@ -1,360 +0,0 @@
-import CALENDAR from './calendar.js'
-
-class Calendar {
-	constructor({
-		date,
-		selected,
-		startDate,
-		endDate,
-		range
-	} = {}) {
-		// 当前日期
-		this.date = this.getDate(new Date()) // 当前初入日期
-		// 打点信息
-		this.selected = selected || [];
-		// 范围开始
-		this.startDate = startDate
-		// 范围结束
-		this.endDate = endDate
-		this.range = range
-		// 多选状态
-		this.cleanMultipleStatus()
-		// 每周日期
-		this.weeks = {}
-		// this._getWeek(this.date.fullDate)
-	}
-	/**
-	 * 设置日期
-	 * @param {Object} date
-	 */
-	setDate(date) {
-		this.selectDate = this.getDate(date)
-		this._getWeek(this.selectDate.fullDate)
-	}
-
-	/**
-	 * 清理多选状态
-	 */
-	cleanMultipleStatus() {
-		this.multipleStatus = {
-			before: '',
-			after: '',
-			data: []
-		}
-	}
-
-	/**
-	 * 重置开始日期
-	 */
-	resetSatrtDate(startDate) {
-		// 范围开始
-		this.startDate = startDate
-
-	}
-
-	/**
-	 * 重置结束日期
-	 */
-	resetEndDate(endDate) {
-		// 范围结束
-		this.endDate = endDate
-	}
-
-	/**
-	 * 获取任意时间
-	 */
-	getDate(date, AddDayCount = 0, str = 'day') {
-		if (!date) {
-			date = new Date()
-		}
-		if (typeof date !== 'object') {
-			date = date.replace(/-/g, '/')
-		}
-		const dd = new Date(date)
-		switch (str) {
-			case 'day':
-				dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
-				break
-			case 'month':
-				if (dd.getDate() === 31 && AddDayCount>0) {
-					dd.setDate(dd.getDate() + AddDayCount)
-				} else {
-					const preMonth = dd.getMonth()
-					dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期
-					const nextMonth = dd.getMonth()
-					// 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
-					if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){
-						dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount))
-					}
-					// 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
-					if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){
-						dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount))
-					}
-				}
-				break
-			case 'year':
-				dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
-				break
-		}
-		const y = dd.getFullYear()
-		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
-		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
-		return {
-			fullDate: y + '-' + m + '-' + d,
-			year: y,
-			month: m,
-			date: d,
-			day: dd.getDay()
-		}
-	}
-
-
-	/**
-	 * 获取上月剩余天数
-	 */
-	_getLastMonthDays(firstDay, full) {
-		let dateArr = []
-		for (let i = firstDay; i > 0; i--) {
-			const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
-			dateArr.push({
-				date: beforeDate,
-				month: full.month - 1,
-				lunar: this.getlunar(full.year, full.month - 1, beforeDate),
-				disable: true
-			})
-		}
-		return dateArr
-	}
-	/**
-	 * 获取本月天数
-	 */
-	_currentMonthDys(dateData, full) {
-		let dateArr = []
-		let fullDate = this.date.fullDate
-		for (let i = 1; i <= dateData; i++) {
-			let nowDate = full.year + '-' + (full.month < 10 ?
-				full.month : full.month) + '-' + (i < 10 ?
-				'0' + i : i)
-			// 是否今天
-			let isDay = fullDate === nowDate
-			// 获取打点信息
-			let info = this.selected && this.selected.find((item) => {
-				if (this.dateEqual(nowDate, item.date)) {
-					return item
-				}
-			})
-
-			// 日期禁用
-			let disableBefore = true
-			let disableAfter = true
-			if (this.startDate) {
-				// let dateCompBefore = this.dateCompare(this.startDate, fullDate)
-				// disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
-				disableBefore = this.dateCompare(this.startDate, nowDate)
-			}
-
-			if (this.endDate) {
-				// let dateCompAfter = this.dateCompare(fullDate, this.endDate)
-				// disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
-				disableAfter = this.dateCompare(nowDate, this.endDate)
-			}
-			let multiples = this.multipleStatus.data
-			let checked = false
-			let multiplesStatus = -1
-			if (this.range) {
-				if (multiples) {
-					multiplesStatus = multiples.findIndex((item) => {
-						return this.dateEqual(item, nowDate)
-					})
-				}
-				if (multiplesStatus !== -1) {
-					checked = true
-				}
-			}
-			let data = {
-				fullDate: nowDate,
-				year: full.year,
-				date: i,
-				multiple: this.range ? checked : false,
-				beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate),
-				afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate),
-				month: full.month,
-				lunar: this.getlunar(full.year, full.month, i),
-				disable: !(disableBefore && disableAfter),
-				isDay
-			}
-			if (info) {
-				data.extraInfo = info
-			}
-
-			dateArr.push(data)
-		}
-		return dateArr
-	}
-	/**
-	 * 获取下月天数
-	 */
-	_getNextMonthDays(surplus, full) {
-		let dateArr = []
-		for (let i = 1; i < surplus + 1; i++) {
-			dateArr.push({
-				date: i,
-				month: Number(full.month) + 1,
-				lunar: this.getlunar(full.year, Number(full.month) + 1, i),
-				disable: true
-			})
-		}
-		return dateArr
-	}
-
-	/**
-	 * 获取当前日期详情
-	 * @param {Object} date
-	 */
-	getInfo(date) {
-		if (!date) {
-			date = new Date()
-		}
-		const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
-		return dateInfo
-	}
-
-	/**
-	 * 比较时间大小
-	 */
-	dateCompare(startDate, endDate) {
-		// 计算截止时间
-		startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
-		// 计算详细项的截止时间
-		endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
-		if (startDate <= endDate) {
-			return true
-		} else {
-			return false
-		}
-	}
-
-	/**
-	 * 比较时间是否相等
-	 */
-	dateEqual(before, after) {
-		// 计算截止时间
-		before = new Date(before.replace('-', '/').replace('-', '/'))
-		// 计算详细项的截止时间
-		after = new Date(after.replace('-', '/').replace('-', '/'))
-		if (before.getTime() - after.getTime() === 0) {
-			return true
-		} else {
-			return false
-		}
-	}
-
-
-	/**
-	 * 获取日期范围内所有日期
-	 * @param {Object} begin
-	 * @param {Object} end
-	 */
-	geDateAll(begin, end) {
-		var arr = []
-		var ab = begin.split('-')
-		var ae = end.split('-')
-		var db = new Date()
-		db.setFullYear(ab[0], ab[1] - 1, ab[2])
-		var de = new Date()
-		de.setFullYear(ae[0], ae[1] - 1, ae[2])
-		var unixDb = db.getTime() - 24 * 60 * 60 * 1000
-		var unixDe = de.getTime() - 24 * 60 * 60 * 1000
-		for (var k = unixDb; k <= unixDe;) {
-			k = k + 24 * 60 * 60 * 1000
-			arr.push(this.getDate(new Date(parseInt(k))).fullDate)
-		}
-		return arr
-	}
-	/**
-	 * 计算阴历日期显示
-	 */
-	getlunar(year, month, date) {
-		return CALENDAR.solar2lunar(year, month, date)
-	}
-	/**
-	 * 设置打点
-	 */
-	setSelectInfo(data, value) {
-		this.selected = value
-		this._getWeek(data)
-	}
-
-	/**
-	 *  获取多选状态
-	 */
-	setMultiple(fullDate) {
-		let {
-			before,
-			after
-		} = this.multipleStatus
-
-		if (!this.range) return
-		if (before && after) {
-			this.multipleStatus.before = ''
-			this.multipleStatus.after = ''
-			this.multipleStatus.data = []
-		} else {
-			if (!before) {
-				this.multipleStatus.before = fullDate
-			} else {
-				this.multipleStatus.after = fullDate
-				if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
-					this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
-				} else {
-					this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
-				}
-			}
-		}
-		this._getWeek(fullDate)
-	}
-
-	/**
-	 * 获取每周数据
-	 * @param {Object} dateData
-	 */
-	_getWeek(dateData) {
-		const {
-			year,
-			month
-		} = this.getDate(dateData)
-		let firstDay = new Date(year, month - 1, 1).getDay()
-		let currentDay = new Date(year, month, 0).getDate()
-		let dates = {
-			lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
-			currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
-			nextMonthDays: [], // 下个月开始几天
-			weeks: []
-		}
-		let canlender = []
-		const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
-		dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
-		canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
-		let weeks = {}
-		// 拼接数组  上个月开始几天 + 本月天数+ 下个月开始几天
-		for (let i = 0; i < canlender.length; i++) {
-			if (i % 7 === 0) {
-				weeks[parseInt(i / 7)] = new Array(7)
-			}
-			weeks[parseInt(i / 7)][i % 7] = canlender[i]
-		}
-		this.canlender = canlender
-		this.weeks = weeks
-	}
-
-	//静态方法
-	// static init(date) {
-	// 	if (!this.instance) {
-	// 		this.instance = new Calendar(date);
-	// 	}
-	// 	return this.instance;
-	// }
-}
-
-
-export default Calendar

+ 0 - 272
node_modules/@dcloudio/uni-ui/lib/uni-card/uni-card.vue

@@ -1,272 +0,0 @@
-<template>
-	<view class="uni-card" :class="{ 'uni-card--full': isFull, 'uni-card--shadow': isShadow,'uni-card--border':border}"
-		:style="{'margin':isFull?0:margin,'padding':spacing,'box-shadow':isShadow?shadow:''}">
-		<!-- 封面 -->
-		<slot name="cover">
-			<view v-if="cover" class="uni-card__cover">
-				<image class="uni-card__cover-image" mode="widthFix" @click="onClick('cover')" :src="cover"></image>
-			</view>
-		</slot>
-		<slot name="title">
-			<view v-if="title || extra" class="uni-card__header">
-				<!-- 卡片标题 -->
-				<view class="uni-card__header-box" @click="onClick('title')">
-					<view v-if="thumbnail" class="uni-card__header-avatar">
-						<image class="uni-card__header-avatar-image" :src="thumbnail" mode="aspectFit" />
-					</view>
-					<view class="uni-card__header-content">
-						<text class="uni-card__header-content-title uni-ellipsis">{{ title }}</text>
-						<text v-if="title&&subTitle"
-							class="uni-card__header-content-subtitle uni-ellipsis">{{ subTitle }}</text>
-					</view>
-				</view>
-				<view class="uni-card__header-extra" @click="onClick('extra')">
-					<slot name="extra">
-						<text class="uni-card__header-extra-text">{{ extra }}</text>
-					</slot>
-				</view>
-			</view>
-		</slot>
-		<!-- 卡片内容 -->
-		<view class="uni-card__content" :style="{padding:padding}" @click="onClick('content')">
-			<slot></slot>
-		</view>
-		<view class="uni-card__actions" @click="onClick('actions')">
-			<slot name="actions"></slot>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Card 卡片
-	 * @description 卡片视图组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=22
-	 * @property {String} title 标题文字
-	 * @property {String} subTitle 副标题
-	 * @property {Number} padding 内容内边距
-	 * @property {Number} margin 卡片外边距
-	 * @property {Number} spacing 卡片内边距
-	 * @property {String} extra 标题额外信息
-	 * @property {String} cover 封面图(本地路径需要引入)
-	 * @property {String} thumbnail 标题左侧缩略图
-	 * @property {Boolean} is-full = [true | false] 卡片内容是否通栏,为 true 时将去除padding值
-	 * @property {Boolean} is-shadow = [true | false] 卡片内容是否开启阴影
-	 * @property {String} shadow 卡片阴影
-	 * @property {Boolean} border 卡片边框
-	 * @event {Function} click 点击 Card 触发事件
-	 */
-	export default {
-		name: 'UniCard',
-		emits: ['click'],
-		props: {
-			title: {
-				type: String,
-				default: ''
-			},
-			subTitle: {
-				type: String,
-				default: ''
-			},
-			padding: {
-				type: String,
-				default: '10px'
-			},
-			margin: {
-				type: String,
-				default: '15px'
-			},
-			spacing: {
-				type: String,
-				default: '0 10px'
-			},
-			extra: {
-				type: String,
-				default: ''
-			},
-			cover: {
-				type: String,
-				default: ''
-			},
-			thumbnail: {
-				type: String,
-				default: ''
-			},
-			isFull: {
-				// 内容区域是否通栏
-				type: Boolean,
-				default: false
-			},
-			isShadow: {
-				// 是否开启阴影
-				type: Boolean,
-				default: true
-			},
-			shadow: {
-				type: String,
-				default: '0px 0px 3px 1px rgba(0, 0, 0, 0.08)'
-			},
-			border: {
-				type: Boolean,
-				default: true
-			}
-		},
-		methods: {
-			onClick(type) {
-				this.$emit('click', type)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-border-3: #EBEEF5 !default;
-	$uni-shadow-base:0 0px 6px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default;
-	$uni-main-color: #3a3a3a !default;
-	$uni-base-color: #6a6a6a !default;
-	$uni-secondary-color: #909399 !default;
-	$uni-spacing-sm: 8px !default;
-	$uni-border-color:$uni-border-3;
-	$uni-shadow: $uni-shadow-base;
-	$uni-card-title: 15px;
-	$uni-cart-title-color:$uni-main-color;
-	$uni-card-subtitle: 12px;
-	$uni-cart-subtitle-color:$uni-secondary-color;
-	$uni-card-spacing: 10px;
-	$uni-card-content-color: $uni-base-color;
-
-	.uni-card {
-		margin: $uni-card-spacing;
-		padding: 0 $uni-spacing-sm;
-		border-radius: 4px;
-		overflow: hidden;
-		font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
-		background-color: #fff;
-		flex: 1;
-
-		.uni-card__cover {
-			position: relative;
-			margin-top: $uni-card-spacing;
-			flex-direction: row;
-			overflow: hidden;
-			border-radius: 4px;
-			.uni-card__cover-image {
-				flex: 1;
-				// width: 100%;
-				/* #ifndef APP-PLUS */
-				vertical-align: middle;
-				/* #endif */
-			}
-		}
-
-		.uni-card__header {
-			display: flex;
-			border-bottom: 1px $uni-border-color solid;
-			flex-direction: row;
-			align-items: center;
-			padding: $uni-card-spacing;
-			overflow: hidden;
-
-			.uni-card__header-box {
-				/* #ifndef APP-NVUE */
-				display: flex;
-				/* #endif */
-				flex: 1;
-				flex-direction: row;
-				align-items: center;
-				overflow: hidden;
-			}
-
-			.uni-card__header-avatar {
-				width: 40px;
-				height: 40px;
-				overflow: hidden;
-				border-radius: 5px;
-				margin-right: $uni-card-spacing;
-				.uni-card__header-avatar-image {
-					flex: 1;
-					width: 40px;
-					height: 40px;
-				}
-			}
-
-			.uni-card__header-content {
-				/* #ifndef APP-NVUE */
-				display: flex;
-				/* #endif */
-				flex-direction: column;
-				justify-content: center;
-				flex: 1;
-				// height: 40px;
-				overflow: hidden;
-
-				.uni-card__header-content-title {
-					font-size: $uni-card-title;
-					color: $uni-cart-title-color;
-					// line-height: 22px;
-				}
-
-				.uni-card__header-content-subtitle {
-					font-size: $uni-card-subtitle;
-					margin-top: 5px;
-					color: $uni-cart-subtitle-color;
-				}
-			}
-
-			.uni-card__header-extra {
-				line-height: 12px;
-
-				.uni-card__header-extra-text {
-					font-size: 12px;
-					color: $uni-cart-subtitle-color;
-				}
-			}
-		}
-
-		.uni-card__content {
-			padding: $uni-card-spacing;
-			font-size: 14px;
-			color: $uni-card-content-color;
-			line-height: 22px;
-		}
-
-		.uni-card__actions {
-			font-size: 12px;
-		}
-	}
-
-	.uni-card--border {
-		border: 1px solid $uni-border-color;
-	}
-
-	.uni-card--shadow {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		box-shadow: $uni-shadow;
-		/* #endif */
-	}
-
-	.uni-card--full {
-		margin: 0;
-		border-left-width: 0;
-		border-left-width: 0;
-		border-radius: 0;
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-card--full:after {
-		border-radius: 0;
-	}
-
-	/* #endif */
-	.uni-ellipsis {
-		/* #ifndef APP-NVUE */
-		overflow: hidden;
-		white-space: nowrap;
-		text-overflow: ellipsis;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		lines: 1;
-		/* #endif */
-	}
-</style>

+ 0 - 317
node_modules/@dcloudio/uni-ui/lib/uni-col/uni-col.vue

@@ -1,317 +0,0 @@
-<template>
-	<!-- #ifndef APP-NVUE -->
-	<view :class="['uni-col', sizeClass, pointClassList]" :style="{
-		paddingLeft:`${Number(gutter)}rpx`,
-		paddingRight:`${Number(gutter)}rpx`,
-	}">
-		<slot></slot>
-	</view>
-	<!-- #endif -->
-	<!-- #ifdef APP-NVUE -->
-	<!-- 在nvue上,类名样式不生效,换为style -->
-	<!-- 设置right正值失效,设置 left 负值 -->
-	<view :class="['uni-col']" :style="{
-		paddingLeft:`${Number(gutter)}rpx`,
-		paddingRight:`${Number(gutter)}rpx`,
-		width:`${nvueWidth}rpx`,
-		position:'relative',
-		marginLeft:`${marginLeft}rpx`,
-		left:`${right === 0 ? left : -right}rpx`
-	}">
-		<slot></slot>
-	</view>
-	<!-- #endif -->
-</template>
-
-<script>
-	/**
-	 * Col	布局-列
-	 * @description	搭配uni-row使用,构建布局。
-	 * @tutorial	https://ext.dcloud.net.cn/plugin?id=3958
-	 *
-	 * @property	{span} type = Number 栅格占据的列数
-	 * 						默认 24
-	 * @property	{offset} type = Number 栅格左侧的间隔格数
-	 * @property	{push} type = Number 栅格向右移动格数
-	 * @property	{pull} type = Number 栅格向左移动格数
-	 * @property	{xs} type = [Number, Object] <768px 响应式栅格数或者栅格属性对象
-	 * 						@description	Number时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}
-	 * @property	{sm} type = [Number, Object] ≥768px 响应式栅格数或者栅格属性对象
-	 * 						@description	Number时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}
-	 * @property	{md} type = [Number, Object] ≥992px 响应式栅格数或者栅格属性对象
-	 * 						@description	Number时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}
-	 * @property	{lg} type = [Number, Object] ≥1200px 响应式栅格数或者栅格属性对象
-	 * 						@description	Number时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}
-	 * @property	{xl} type = [Number, Object] ≥1920px 响应式栅格数或者栅格属性对象
-	 * 						@description	Number时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}
-	 */
-	const ComponentClass = 'uni-col';
-
-	// -1 默认值,因为在微信小程序端只给Number会有默认值0
-	export default {
-		name: 'uniCol',
-		// #ifdef MP-WEIXIN
-		options: {
-			virtualHost: true // 在微信小程序中将组件节点渲染为虚拟节点,更加接近Vue组件的表现
-		},
-		// #endif
-		props: {
-			span: {
-				type: Number,
-				default: 24
-			},
-			offset: {
-				type: Number,
-				default: -1
-			},
-			pull: {
-				type: Number,
-				default: -1
-			},
-			push: {
-				type: Number,
-				default: -1
-			},
-			xs: [Number, Object],
-			sm: [Number, Object],
-			md: [Number, Object],
-			lg: [Number, Object],
-			xl: [Number, Object]
-		},
-		data() {
-			return {
-				gutter: 0,
-				sizeClass: '',
-				parentWidth: 0,
-				nvueWidth: 0,
-				marginLeft: 0,
-				right: 0,
-				left: 0
-			}
-		},
-		created() {
-			// 字节小程序中,在computed中读取$parent为undefined
-			let parent = this.$parent;
-
-			while (parent && parent.$options.componentName !== 'uniRow') {
-				parent = parent.$parent;
-			}
-
-			this.updateGutter(parent.gutter)
-			parent.$watch('gutter', (gutter) => {
-				this.updateGutter(gutter)
-			})
-
-			// #ifdef APP-NVUE
-			this.updateNvueWidth(parent.width)
-			parent.$watch('width', (width) => {
-				this.updateNvueWidth(width)
-			})
-			// #endif
-		},
-		computed: {
-			sizeList() {
-				let {
-					span,
-					offset,
-					pull,
-					push
-				} = this;
-
-				return {
-					span,
-					offset,
-					pull,
-					push
-				}
-			},
-			// #ifndef APP-NVUE
-			pointClassList() {
-				let classList = [];
-
-				['xs', 'sm', 'md', 'lg', 'xl'].forEach(point => {
-					const props = this[point];
-					if (typeof props === 'number') {
-						classList.push(`${ComponentClass}-${point}-${props}`)
-					} else if (typeof props === 'object' && props) {
-						Object.keys(props).forEach(pointProp => {
-							classList.push(
-								pointProp === 'span' ?
-								`${ComponentClass}-${point}-${props[pointProp]}` :
-								`${ComponentClass}-${point}-${pointProp}-${props[pointProp]}`
-							)
-						})
-					}
-				});
-
-				// 支付宝小程序使用 :class=[ ['a','b'] ],渲染错误
-				return classList.join(' ');
-			}
-			// #endif
-		},
-		methods: {
-			updateGutter(parentGutter) {
-				parentGutter = Number(parentGutter);
-				if (!isNaN(parentGutter)) {
-					this.gutter = parentGutter / 2
-				}
-			},
-			// #ifdef APP-NVUE
-			updateNvueWidth(width) {
-				// 用于在nvue端,span,offset,pull,push的计算
-				this.parentWidth = width;
-				['span', 'offset', 'pull', 'push'].forEach(size => {
-					const curSize = this[size];
-					if ((curSize || curSize === 0) && curSize !== -1) {
-						let RPX = 1 / 24 * curSize * width
-						RPX = Number(RPX);
-						switch (size) {
-							case 'span':
-								this.nvueWidth = RPX
-								break;
-							case 'offset':
-								this.marginLeft = RPX
-								break;
-							case 'pull':
-								this.right = RPX
-								break;
-							case 'push':
-								this.left = RPX
-								break;
-						}
-					}
-				});
-			}
-			// #endif
-		},
-		watch: {
-			sizeList: {
-				immediate: true,
-				handler(newVal) {
-					// #ifndef APP-NVUE
-					let classList = [];
-					for (let size in newVal) {
-						const curSize = newVal[size];
-						if ((curSize || curSize === 0) && curSize !== -1) {
-							classList.push(
-								size === 'span' ?
-								`${ComponentClass}-${curSize}` :
-								`${ComponentClass}-${size}-${curSize}`
-							)
-						}
-					}
-					// 支付宝小程序使用 :class=[ ['a','b'] ],渲染错误
-					this.sizeClass = classList.join(' ');
-					// #endif
-					// #ifdef APP-NVUE
-					this.updateNvueWidth(this.parentWidth);
-					// #endif
-				}
-			}
-		}
-	}
-</script>
-
-<style lang='scss' >
-	/* breakpoints */
-	$--sm: 768px !default;
-	$--md: 992px !default;
-	$--lg: 1200px !default;
-	$--xl: 1920px !default;
-
-	$breakpoints: ('xs' : (max-width: $--sm - 1),
-	'sm' : (min-width: $--sm),
-	'md' : (min-width: $--md),
-	'lg' : (min-width: $--lg),
-	'xl' : (min-width: $--xl));
-
-	$layout-namespace: ".uni-";
-	$col: $layout-namespace+"col";
-
-	@function getSize($size) {
-		/* TODO 1/24 * $size * 100 * 1%; 使用计算后的值,为了解决 vue3 控制台报错 */
-		@return 0.04166666666 * $size * 100 * 1%;
-	}
-
-	@mixin res($key, $map:$breakpoints) {
-		@if map-has-key($map, $key) {
-			@media screen and #{inspect(map-get($map,$key))} {
-				@content;
-			}
-		}
-
-		@else {
-			@warn "Undeinfed point: `#{$key}`";
-		}
-	}
-
-	/* #ifndef APP-NVUE */
-	#{$col} {
-		float: left;
-		box-sizing: border-box;
-	}
-
-	#{$col}-0 {
-		/* #ifdef APP-NVUE */
-		width: 0;
-		height: 0;
-		margin-top: 0;
-		margin-right: 0;
-		margin-bottom: 0;
-		margin-left: 0;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		display: none;
-		/* #endif */
-	}
-
-	@for $i from 0 through 24 {
-		#{$col}-#{$i} {
-			width: getSize($i);
-		}
-
-		#{$col}-offset-#{$i} {
-			margin-left: getSize($i);
-		}
-
-		#{$col}-pull-#{$i} {
-			position: relative;
-			right: getSize($i);
-		}
-
-		#{$col}-push-#{$i} {
-			position: relative;
-			left: getSize($i);
-		}
-	}
-
-	@each $point in map-keys($breakpoints) {
-		@include res($point) {
-			#{$col}-#{$point}-0 {
-				display: none;
-			}
-
-			@for $i from 0 through 24 {
-				#{$col}-#{$point}-#{$i} {
-					width: getSize($i);
-				}
-
-				#{$col}-#{$point}-offset-#{$i} {
-					margin-left: getSize($i);
-				}
-
-				#{$col}-#{$point}-pull-#{$i} {
-					position: relative;
-					right: getSize($i);
-				}
-
-				#{$col}-#{$point}-push-#{$i} {
-					position: relative;
-					left: getSize($i);
-				}
-			}
-		}
-	}
-
-	/* #endif */
-</style>

+ 0 - 402
node_modules/@dcloudio/uni-ui/lib/uni-collapse-item/uni-collapse-item.vue

@@ -1,402 +0,0 @@
-<template>
-	<view class="uni-collapse-item">
-		<!-- onClick(!isOpen) -->
-		<view @click="onClick(!isOpen)" class="uni-collapse-item__title"
-			:class="{'is-open':isOpen &&titleBorder === 'auto' ,'uni-collapse-item-border':titleBorder !== 'none'}">
-			<view class="uni-collapse-item__title-wrap">
-				<slot name="title">
-					<view class="uni-collapse-item__title-box" :class="{'is-disabled':disabled}">
-						<image v-if="thumb" :src="thumb" class="uni-collapse-item__title-img" />
-						<text class="uni-collapse-item__title-text">{{ title }}</text>
-					</view>
-				</slot>
-			</view>
-			<view v-if="showArrow"
-				:class="{ 'uni-collapse-item__title-arrow-active': isOpen, 'uni-collapse-item--animation': showAnimation === true }"
-				class="uni-collapse-item__title-arrow">
-				<uni-icons :color="disabled?'#ddd':'#bbb'" size="14" type="bottom" />
-			</view>
-		</view>
-		<view class="uni-collapse-item__wrap" :class="{'is--transition':showAnimation}"
-			:style="{height: (isOpen?height:0) +'px'}">
-			<view :id="elId" ref="collapse--hook" class="uni-collapse-item__wrap-content"
-				:class="{open:isheight,'uni-collapse-item--border':border&&isOpen}">
-				<slot></slot>
-			</view>
-		</view>
-
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const dom = weex.requireModule('dom')
-	// #endif
-	/**
-	 * CollapseItem 折叠面板子组件
-	 * @description 折叠面板子组件
-	 * @property {String} title 标题文字
-	 * @property {String} thumb 标题左侧缩略图
-	 * @property {String} name 唯一标志符
-	 * @property {Boolean} open = [true|false] 是否展开组件
-	 * @property {Boolean} titleBorder = [true|false] 是否显示标题分隔线
-	 * @property {Boolean} border = [true|false] 是否显示分隔线
-	 * @property {Boolean} disabled = [true|false] 是否展开面板
-	 * @property {Boolean} showAnimation = [true|false] 开启动画
-	 * @property {Boolean} showArrow = [true|false] 是否显示右侧箭头
-	 */
-	export default {
-		name: 'uniCollapseItem',
-		props: {
-			// 列表标题
-			title: {
-				type: String,
-				default: ''
-			},
-			name: {
-				type: [Number, String],
-				default: ''
-			},
-			// 是否禁用
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// #ifdef APP-PLUS
-			// 是否显示动画,app 端默认不开启动画,卡顿严重
-			showAnimation: {
-				type: Boolean,
-				default: false
-			},
-			// #endif
-			// #ifndef APP-PLUS
-			// 是否显示动画
-			showAnimation: {
-				type: Boolean,
-				default: true
-			},
-			// #endif
-			// 是否展开
-			open: {
-				type: Boolean,
-				default: false
-			},
-			// 缩略图
-			thumb: {
-				type: String,
-				default: ''
-			},
-			// 标题分隔线显示类型
-			titleBorder: {
-				type: String,
-				default: 'auto'
-			},
-			border: {
-				type: Boolean,
-				default: true
-			},
-			showArrow: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			// TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug
-			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
-			return {
-				isOpen: false,
-				isheight: null,
-				height: 0,
-				elId,
-				nameSync: 0
-			}
-		},
-		watch: {
-			open(val) {
-				this.isOpen = val
-				this.onClick(val, 'init')
-			}
-		},
-		updated(e) {
-			this.$nextTick(() => {
-				this.init(true)
-			})
-		},
-		created() {
-			this.collapse = this.getCollapse()
-			this.oldHeight = 0
-			this.onClick(this.open, 'init')
-		},
-		// #ifndef VUE3
-		// TODO vue2
-		destroyed() {
-			if (this.__isUnmounted) return
-			this.uninstall()
-		},
-		// #endif
-		// #ifdef VUE3
-		// TODO vue3
-		unmounted() {
-			this.__isUnmounted = true
-			this.uninstall()
-		},
-		// #endif
-		mounted() {
-			if (!this.collapse) return
-			if (this.name !== '') {
-				this.nameSync = this.name
-			} else {
-				this.nameSync = this.collapse.childrens.length + ''
-			}
-			if (this.collapse.names.indexOf(this.nameSync) === -1) {
-				this.collapse.names.push(this.nameSync)
-			} else {
-				console.warn(`name 值 ${this.nameSync} 重复`);
-			}
-			if (this.collapse.childrens.indexOf(this) === -1) {
-				this.collapse.childrens.push(this)
-			}
-			this.init()
-		},
-		methods: {
-			init(type) {
-				// #ifndef APP-NVUE
-				this.getCollapseHeight(type)
-				// #endif
-				// #ifdef APP-NVUE
-				this.getNvueHwight(type)
-				// #endif
-			},
-			uninstall() {
-				if (this.collapse) {
-					this.collapse.childrens.forEach((item, index) => {
-						if (item === this) {
-							this.collapse.childrens.splice(index, 1)
-						}
-					})
-					this.collapse.names.forEach((item, index) => {
-						if (item === this.nameSync) {
-							this.collapse.names.splice(index, 1)
-						}
-					})
-				}
-			},
-			onClick(isOpen, type) {
-				if (this.disabled) return
-				this.isOpen = isOpen
-				if (this.isOpen && this.collapse) {
-					this.collapse.setAccordion(this)
-				}
-				if (type !== 'init') {
-					this.collapse.onChange(isOpen, this)
-				}
-			},
-			getCollapseHeight(type, index = 0) {
-				const views = uni.createSelectorQuery().in(this)
-				views
-					.select(`#${this.elId}`)
-					.fields({
-						size: true
-					}, data => {
-						// TODO 百度中可能获取不到节点信息 ,需要循环获取
-						if (index >= 10) return
-						if (!data) {
-							index++
-							this.getCollapseHeight(false, index)
-							return
-						}
-						// #ifdef APP-NVUE
-						this.height = data.height + 1
-						// #endif
-						// #ifndef APP-NVUE
-						this.height = data.height
-						// #endif
-						this.isheight = true
-						if (type) return
-						this.onClick(this.isOpen, 'init')
-					})
-					.exec()
-			},
-			getNvueHwight(type) {
-				const result = dom.getComponentRect(this.$refs['collapse--hook'], option => {
-					if (option && option.result && option.size) {
-						// #ifdef APP-NVUE
-						this.height = option.size.height + 1
-						// #endif
-						// #ifndef APP-NVUE
-						this.height = option.size.height
-						// #endif
-						this.isheight = true
-						if (type) return
-						this.onClick(this.open, 'init')
-					}
-				})
-			},
-			/**
-			 * 获取父元素实例
-			 */
-			getCollapse(name = 'uniCollapse') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false;
-					parentName = parent.$options.name;
-				}
-				return parent;
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-collapse-item {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-
-		/* #endif */
-		&__title {
-			/* #ifndef APP-NVUE */
-			display: flex;
-			width: 100%;
-			box-sizing: border-box;
-			/* #endif */
-			flex-direction: row;
-			align-items: center;
-			transition: border-bottom-color .3s;
-
-			// transition-property: border-bottom-color;
-			// transition-duration: 5s;
-			&-wrap {
-				width: 100%;
-				flex: 1;
-
-			}
-
-			&-box {
-				padding: 0 15px;
-				/* #ifndef APP-NVUE */
-				display: flex;
-				width: 100%;
-				box-sizing: border-box;
-				/* #endif */
-				flex-direction: row;
-				justify-content: space-between;
-				align-items: center;
-				height: 48px;
-				line-height: 48px;
-				background-color: #fff;
-				color: #303133;
-				font-size: 13px;
-				font-weight: 500;
-				/* #ifdef H5 */
-				cursor: pointer;
-				outline: none;
-
-				/* #endif */
-				&.is-disabled {
-					.uni-collapse-item__title-text {
-						color: #999;
-					}
-				}
-
-			}
-
-			&.uni-collapse-item-border {
-				border-bottom: 1px solid #ebeef5;
-			}
-
-			&.is-open {
-				border-bottom-color: transparent;
-			}
-
-			&-img {
-				height: 22px;
-				width: 22px;
-				margin-right: 10px;
-			}
-
-			&-text {
-				flex: 1;
-				font-size: 14px;
-				/* #ifndef APP-NVUE */
-				white-space: nowrap;
-				color: inherit;
-				/* #endif */
-				/* #ifdef APP-NVUE */
-				lines: 1;
-				/* #endif */
-				overflow: hidden;
-				text-overflow: ellipsis;
-			}
-
-			&-arrow {
-				/* #ifndef APP-NVUE */
-				display: flex;
-				box-sizing: border-box;
-				/* #endif */
-				align-items: center;
-				justify-content: center;
-				width: 20px;
-				height: 20px;
-				margin-right: 10px;
-				transform: rotate(0deg);
-
-				&-active {
-					transform: rotate(-180deg);
-				}
-			}
-
-
-		}
-
-		&__wrap {
-			/* #ifndef APP-NVUE */
-			will-change: height;
-			box-sizing: border-box;
-			/* #endif */
-			background-color: #fff;
-			overflow: hidden;
-			position: relative;
-			height: 0;
-
-			&.is--transition {
-				// transition: all 0.3s;
-				transition-property: height, border-bottom-width;
-				transition-duration: 0.3s;
-				/* #ifndef APP-NVUE */
-				will-change: height;
-				/* #endif */
-			}
-
-
-
-			&-content {
-				position: absolute;
-				font-size: 13px;
-				color: #303133;
-				// transition: height 0.3s;
-				border-bottom-color: transparent;
-				border-bottom-style: solid;
-				border-bottom-width: 0;
-
-				&.uni-collapse-item--border {
-					border-bottom-width: 1px;
-					border-bottom-color: red;
-					border-bottom-color: #ebeef5;
-				}
-
-				&.open {
-					position: relative;
-				}
-			}
-		}
-
-		&--animation {
-			transition-property: transform;
-			transition-duration: 0.3s;
-			transition-timing-function: ease;
-		}
-
-	}
-</style>

+ 0 - 147
node_modules/@dcloudio/uni-ui/lib/uni-collapse/uni-collapse.vue

@@ -1,147 +0,0 @@
-<template>
-	<view class="uni-collapse">
-		<slot />
-	</view>
-</template>
-<script>
-	/**
-	 * Collapse 折叠面板
-	 * @description 展示可以折叠 / 展开的内容区域
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=23
-	 * @property {String|Array} value 当前激活面板改变时触发(如果是手风琴模式,参数类型为string,否则为array)
-	 * @property {Boolean} accordion = [true|false] 是否开启手风琴效果是否开启手风琴效果
-	 * @event {Function} change 切换面板时触发,如果是手风琴模式,返回类型为string,否则为array
-	 */
-	export default {
-		name: 'uniCollapse',
-		emits:['change','activeItem','input','update:modelValue'],
-		props: {
-			value: {
-				type: [String, Array],
-				default: ''
-			},
-			modelValue: {
-				type: [String, Array],
-				default: ''
-			},
-			accordion: {
-				// 是否开启手风琴效果
-				type: [Boolean, String],
-				default: false
-			},
-		},
-		data() {
-			return {}
-		},
-		computed: {
-			// TODO 兼容 vue2 和 vue3
-			dataValue() {
-				let value = (typeof this.value === 'string' && this.value === '') ||
-					(Array.isArray(this.value) && this.value.length === 0)
-				let modelValue = (typeof this.modelValue === 'string' && this.modelValue === '') ||
-					(Array.isArray(this.modelValue) && this.modelValue.length === 0)
-				if (value) {
-					return this.modelValue
-				}
-				if (modelValue) {
-					return this.value
-				}
-
-				return this.value
-			}
-		},
-		watch: {
-			dataValue(val) {
-				this.setOpen(val)
-			}
-		},
-		created() {
-			this.childrens = []
-			this.names = []
-		},
-		mounted() {
-			this.$nextTick(()=>{
-				this.setOpen(this.dataValue)
-			})
-		},
-		methods: {
-			setOpen(val) {
-				let str = typeof val === 'string'
-				let arr = Array.isArray(val)
-				this.childrens.forEach((vm, index) => {
-					if (str) {
-						if (val === vm.nameSync) {
-							if (!this.accordion) {
-								console.warn('accordion 属性为 false ,v-model 类型应该为 array')
-								return
-							}
-							vm.isOpen = true
-						}
-					}
-					if (arr) {
-						val.forEach(v => {
-							if (v === vm.nameSync) {
-								if (this.accordion) {
-									console.warn('accordion 属性为 true ,v-model 类型应该为 string')
-									return
-								}
-								vm.isOpen = true
-							}
-						})
-					}
-				})
-				this.emit(val)
-			},
-			setAccordion(self) {
-				if (!this.accordion) return
-				this.childrens.forEach((vm, index) => {
-					if (self !== vm) {
-						vm.isOpen = false
-					}
-				})
-			},
-			resize() {
-				this.childrens.forEach((vm, index) => {
-					// #ifndef APP-NVUE
-					vm.getCollapseHeight()
-					// #endif
-					// #ifdef APP-NVUE
-					vm.getNvueHwight()
-					// #endif
-				})
-			},
-			onChange(isOpen, self) {
-				let activeItem = []
-
-				if (this.accordion) {
-					activeItem = isOpen ? self.nameSync : ''
-				} else {
-					this.childrens.forEach((vm, index) => {
-						if (vm.isOpen) {
-							activeItem.push(vm.nameSync)
-						}
-					})
-				}
-				this.$emit('change', activeItem)
-				this.emit(activeItem)
-			},
-			emit(val){
-				this.$emit('input', val)
-				this.$emit('update:modelValue', val)
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	.uni-collapse {
-		/* #ifndef APP-NVUE */
-		width: 100%;
-		display: flex;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		flex: 1;
-		/* #endif */
-		flex-direction: column;
-		background-color: #fff;
-	}
-</style>

+ 0 - 294
node_modules/@dcloudio/uni-ui/lib/uni-combox/uni-combox.vue

@@ -1,294 +0,0 @@
-<template>
-	<view class="uni-combox" :class="border ? '' : 'uni-combox__no-border'">
-		<view v-if="label" class="uni-combox__label" :style="labelStyle">
-			<text>{{label}}</text>
-		</view>
-		<view class="uni-combox__input-box">
-			<input class="uni-combox__input" type="text" :placeholder="placeholder"
-				placeholder-class="uni-combox__input-plac" v-model="inputVal" @input="onInput" @focus="onFocus" @blur="onBlur" />
-			<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="toggleSelector">
-			</uni-icons>
-		</view>
-		<view class="uni-combox__selector" v-if="showSelector">
-			<view class="uni-popper__arrow"></view>
-			<scroll-view scroll-y="true" class="uni-combox__selector-scroll" @scroll="onScroll">
-				<view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0">
-					<text>{{emptyTips}}</text>
-				</view>
-				<view class="uni-combox__selector-item" v-for="(item,index) in filterCandidates" :key="index" @click="onSelectorClick(index)">
-					<text>{{item}}</text>
-				</view>
-			</scroll-view>
-		</view>
-		<!-- 新增蒙层,点击蒙层时关闭选项显示 -->
-		<view class="uni-combox__mask" v-show="showSelector" @click="showSelector = false"></view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Combox 组合输入框
-	 * @description 组合输入框一般用于既可以输入也可以选择的场景
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=1261
-	 * @property {String} label 左侧文字
-	 * @property {String} labelWidth 左侧内容宽度
-	 * @property {String} placeholder 输入框占位符
-	 * @property {Array} candidates 候选项列表
-	 * @property {String} emptyTips 筛选结果为空时显示的文字
-	 * @property {String} value 组合框的值
-	 */
-	export default {
-		name: 'uniCombox',
-		emits: ['input', 'update:modelValue'],
-		props: {
-			border: {
-				type: Boolean,
-				default: true
-			},
-			label: {
-				type: String,
-				default: ''
-			},
-			labelWidth: {
-				type: String,
-				default: 'auto'
-			},
-			placeholder: {
-				type: String,
-				default: ''
-			},
-			candidates: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			emptyTips: {
-				type: String,
-				default: '无匹配项'
-			},
-			// #ifndef VUE3
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				type: [String, Number],
-				default: ''
-			},
-			// #endif
-		},
-		data() {
-			return {
-				showSelector: false,
-				inputVal: '',
-				blurTimer:null,
-			}
-		},
-		computed: {
-			labelStyle() {
-				if (this.labelWidth === 'auto') {
-					return ""
-				}
-				return `width: ${this.labelWidth}`
-			},
-			filterCandidates() {
-				if (this.inputVal !== 0 && !this.inputVal) {
-					return this.candidates
-				}
-				return this.candidates.filter((item) => {
-					return item.toString().indexOf(this.inputVal) > -1
-				})
-			},
-			filterCandidatesLength() {
-				return this.filterCandidates.length
-			}
-		},
-		watch: {
-			// #ifndef VUE3
-			value: {
-				handler(newVal) {
-					this.inputVal = newVal
-				},
-				immediate: true
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				handler(newVal) {
-					this.inputVal = newVal
-				},
-				immediate: true
-			},
-			// #endif
-		},
-		methods: {
-			toggleSelector() {
-				this.showSelector = !this.showSelector
-			},
-			onFocus() {
-				this.showSelector = true
-			},
-			onBlur() {
-				this.blurTimer = setTimeout(() => {
-					this.showSelector = false
-				}, 153)
-			},
-			onScroll(){ // 滚动时将blur的定时器关掉
-				if(this.blurTimer) {
-					clearTimeout(this.blurTimer)
-					this.blurTimer = null
-				}
-			},
-			onSelectorClick(index) {
-				this.inputVal = this.filterCandidates[index]
-				this.showSelector = false
-				this.$emit('input', this.inputVal)
-				this.$emit('update:modelValue', this.inputVal)
-			},
-			onInput() {
-				setTimeout(() => {
-					this.$emit('input', this.inputVal)
-					this.$emit('update:modelValue', this.inputVal)
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-combox {
-		font-size: 14px;
-		border: 1px solid #DCDFE6;
-		border-radius: 4px;
-		padding: 6px 10px;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		// height: 40px;
-		flex-direction: row;
-		align-items: center;
-		// border-bottom: solid 1px #DDDDDD;
-	}
-
-	.uni-combox__label {
-		font-size: 16px;
-		line-height: 22px;
-		padding-right: 10px;
-		color: #999999;
-	}
-
-	.uni-combox__input-box {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-combox__input {
-		flex: 1;
-		font-size: 14px;
-		height: 22px;
-		line-height: 22px;
-	}
-
-	.uni-combox__input-plac {
-		font-size: 14px;
-		color: #999;
-	}
-
-	.uni-combox__selector {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		/* #endif */
-		position: absolute;
-		top: calc(100% + 12px);
-		left: 0;
-		width: 100%;
-		background-color: #FFFFFF;
-		border: 1px solid #EBEEF5;
-		border-radius: 6px;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-		z-index: 3;
-		padding: 4px 0;
-	}
-
-	.uni-combox__selector-scroll {
-		/* #ifndef APP-NVUE */
-		max-height: 200px;
-		box-sizing: border-box;
-		/* #endif */
-	}
-
-	.uni-combox__selector-empty,
-	.uni-combox__selector-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		cursor: pointer;
-		/* #endif */
-		line-height: 36px;
-		font-size: 14px;
-		text-align: center;
-		// border-bottom: solid 1px #DDDDDD;
-		padding: 0px 10px;
-	}
-
-	.uni-combox__selector-item:hover {
-		background-color: #f9f9f9;
-	}
-
-	.uni-combox__selector-empty:last-child,
-	.uni-combox__selector-item:last-child {
-		/* #ifndef APP-NVUE */
-		border-bottom: none;
-		/* #endif */
-	}
-
-	// picker 弹出层通用的指示小三角
-	.uni-popper__arrow,
-	.uni-popper__arrow::after {
-		position: absolute;
-		display: block;
-		width: 0;
-		height: 0;
-		border-color: transparent;
-		border-style: solid;
-		border-width: 6px;
-	}
-
-	.uni-popper__arrow {
-		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
-		top: -6px;
-		left: 10%;
-		margin-right: 3px;
-		border-top-width: 0;
-		border-bottom-color: #EBEEF5;
-	}
-
-	.uni-popper__arrow::after {
-		content: " ";
-		top: 1px;
-		margin-left: -6px;
-		border-top-width: 0;
-		border-bottom-color: #fff;
-	}
-
-	.uni-combox__no-border {
-		border: none;
-	}
-
-	.uni-combox__mask {
-		width:100%;
-		height:100%;
-		position: fixed;
-		top: 0;
-		left: 0;
-    z-index: 1;
-	}
-</style>

+ 0 - 6
node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/en.json

@@ -1,6 +0,0 @@
-{
-	"uni-countdown.day": "day",
-	"uni-countdown.h": "h",
-	"uni-countdown.m": "m",
-	"uni-countdown.s": "s"
-}

+ 0 - 8
node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 6
node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hans.json

@@ -1,6 +0,0 @@
-{
-	"uni-countdown.day": "天",
-	"uni-countdown.h": "时",
-	"uni-countdown.m": "分",
-	"uni-countdown.s": "秒"
-}

+ 0 - 6
node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hant.json

@@ -1,6 +0,0 @@
-{
-	"uni-countdown.day": "天",
-	"uni-countdown.h": "時",
-	"uni-countdown.m": "分",
-	"uni-countdown.s": "秒"
-}

+ 0 - 267
node_modules/@dcloudio/uni-ui/lib/uni-countdown/uni-countdown.vue

@@ -1,267 +0,0 @@
-<template>
-	<view class="uni-countdown">
-		<text v-if="showDay" :style="[timeStyle]" class="uni-countdown__number">{{ d }}</text>
-		<text v-if="showDay" :style="[splitorStyle]" class="uni-countdown__splitor">{{dayText}}</text>
-		<text :style="[timeStyle]" class="uni-countdown__number">{{ h }}</text>
-		<text :style="[splitorStyle]" class="uni-countdown__splitor">{{ showColon ? ':' : hourText }}</text>
-		<text :style="[timeStyle]" class="uni-countdown__number">{{ i }}</text>
-		<text :style="[splitorStyle]" class="uni-countdown__splitor">{{ showColon ? ':' : minuteText }}</text>
-		<text :style="[timeStyle]" class="uni-countdown__number">{{ s }}</text>
-		<text v-if="!showColon" :style="[splitorStyle]" class="uni-countdown__splitor">{{secondText}}</text>
-	</view>
-</template>
-<script>
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {
-		t
-	} = initVueI18n(messages)
-	/**
-	 * Countdown 倒计时
-	 * @description 倒计时组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=25
-	 * @property {String} backgroundColor 背景色
-	 * @property {String} color 文字颜色
-	 * @property {Number} day 天数
-	 * @property {Number} hour 小时
-	 * @property {Number} minute 分钟
-	 * @property {Number} second 秒
-	 * @property {Number} timestamp 时间戳
-	 * @property {Boolean} showDay = [true|false] 是否显示天数
-	 * @property {Boolean} show-colon = [true|false] 是否以冒号为分隔符
-	 * @property {String} splitorColor 分割符号颜色
-	 * @event {Function} timeup 倒计时时间到触发事件
-	 * @example <uni-countdown :day="1" :hour="1" :minute="12" :second="40"></uni-countdown>
-	 */
-	export default {
-		name: 'UniCountdown',
-		emits: ['timeup'],
-		props: {
-			showDay: {
-				type: Boolean,
-				default: true
-			},
-			showColon: {
-				type: Boolean,
-				default: true
-			},
-			start: {
-				type: Boolean,
-				default: true
-			},
-			backgroundColor: {
-				type: String,
-				default: ''
-			},
-			color: {
-				type: String,
-				default: '#333'
-			},
-			fontSize: {
-				type: Number,
-				default: 14
-			},
-			splitorColor: {
-				type: String,
-				default: '#333'
-			},
-			day: {
-				type: Number,
-				default: 0
-			},
-			hour: {
-				type: Number,
-				default: 0
-			},
-			minute: {
-				type: Number,
-				default: 0
-			},
-			second: {
-				type: Number,
-				default: 0
-			},
-			timestamp: {
-				type: Number,
-				default: 0
-			},
-      zeroPad: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				timer: null,
-				syncFlag: false,
-				d: '00',
-				h: '00',
-				i: '00',
-				s: '00',
-				leftTime: 0,
-				seconds: 0
-			}
-		},
-		computed: {
-			dayText() {
-				return t("uni-countdown.day")
-			},
-			hourText(val) {
-				return t("uni-countdown.h")
-			},
-			minuteText(val) {
-				return t("uni-countdown.m")
-			},
-			secondText(val) {
-				return t("uni-countdown.s")
-			},
-			timeStyle() {
-				const {
-					color,
-					backgroundColor,
-					fontSize
-				} = this
-				return {
-					color,
-					backgroundColor,
-					fontSize: `${fontSize}px`,
-					width: `${fontSize * 22 / 14}px`, // 按字体大小为 14px 时的比例缩放
- 					lineHeight: `${fontSize * 20 / 14}px`,
-					borderRadius: `${fontSize * 3 / 14}px`,
-				}
-			},
-			splitorStyle() {
-				const { splitorColor, fontSize, backgroundColor } = this
-				return {
-					color: splitorColor,
-					fontSize: `${fontSize * 12 / 14}px`,
-					margin: backgroundColor ? `${fontSize * 4 / 14}px` : ''
-				}
-			}
-		},
-		watch: {
-			day(val) {
-				this.changeFlag()
-			},
-			hour(val) {
-				this.changeFlag()
-			},
-			minute(val) {
-				this.changeFlag()
-			},
-			second(val) {
-				this.changeFlag()
-			},
-			start: {
-				immediate: true,
-				handler(newVal, oldVal) {
-					if (newVal) {
-						this.startData();
-					} else {
-						if (!oldVal) return
-						clearInterval(this.timer)
-					}
-				}
-
-			}
-		},
-		created: function(e) {
-			this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
-			this.countDown()
-		},
-		// #ifndef VUE3
-		destroyed() {
-			clearInterval(this.timer)
-		},
-		// #endif
-		// #ifdef VUE3
-		unmounted() {
-			clearInterval(this.timer)
-		},
-		// #endif
-		methods: {
-			toSeconds(timestamp, day, hours, minutes, seconds) {
-				if (timestamp) {
-					return timestamp - parseInt(new Date().getTime() / 1000, 10)
-				}
-				return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
-			},
-			timeUp() {
-				clearInterval(this.timer)
-				this.$emit('timeup')
-			},
-			countDown() {
-				let seconds = this.seconds
-				let [day, hour, minute, second] = [0, 0, 0, 0]
-				if (seconds > 0) {
-					day = Math.floor(seconds / (60 * 60 * 24))
-					hour = Math.floor(seconds / (60 * 60)) - (day * 24)
-					minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
-					second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
-				} else {
-					this.timeUp()
-				}
-        day = (day < 10 && this.zeroPad) ? `0${day}` : day
-				hour = (hour < 10 && this.zeroPad) ? `0${hour}` : hour
-				minute = (minute < 10 && this.zeroPad) ? `0${minute}` : minute
-				second = (second < 10 && this.zeroPad) ? `0${second}` : second
-				this.d = day
-				this.h = hour
-				this.i = minute
-				this.s = second
-			},
-			startData() {
-				this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
-				if (this.seconds <= 0) {
-					this.seconds = this.toSeconds(0, 0, 0, 0, 0)
-					this.countDown()
-					return
-				}
-				clearInterval(this.timer)
-				this.countDown()
-				this.timer = setInterval(() => {
-					this.seconds--
-					if (this.seconds < 0) {
-						this.timeUp()
-						return
-					}
-					this.countDown()
-				}, 1000)
-			},
-			update(){
-				this.startData();
-			},
-			changeFlag() {
-				if (!this.syncFlag) {
-					this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
-					this.startData();
-					this.syncFlag = true;
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	$font-size: 14px;
-
-	.uni-countdown {
-		display: flex;
-		flex-direction: row;
-		justify-content: flex-start;
-		align-items: center;
-
-		&__splitor {
-			margin: 0 2px;
-			font-size: $font-size;
-			color: #333;
-		}
-
-		&__number {
-			border-radius: 3px;
-			text-align: center;
-			font-size: $font-size;
-		}
-	}
-</style>

+ 0 - 821
node_modules/@dcloudio/uni-ui/lib/uni-data-checkbox/uni-data-checkbox.vue

@@ -1,821 +0,0 @@
-<template>
-	<view class="uni-data-checklist" :style="{'margin-top':isTop+'px'}">
-		<template v-if="!isLocal">
-			<view class="uni-data-loading">
-				<uni-load-more v-if="!mixinDatacomErrorMessage" status="loading" iconType="snow" :iconSize="18" :content-text="contentText"></uni-load-more>
-				<text v-else>{{mixinDatacomErrorMessage}}</text>
-			</view>
-		</template>
-		<template v-else>
-			<checkbox-group v-if="multiple" class="checklist-group" :class="{'is-list':mode==='list' || wrap}" @change="chagne">
-				<label class="checklist-box" :class="['is--'+mode,item.selected?'is-checked':'',(disabled || !!item.disabled)?'is-disable':'',index!==0&&mode==='list'?'is-list-border':'']"
-				 :style="item.styleBackgroud" v-for="(item,index) in dataList" :key="index">
-					<checkbox class="hidden" hidden :disabled="disabled || !!item.disabled" :value="item[map.value]+''" :checked="item.selected" />
-					<view v-if="(mode !=='tag' && mode !== 'list') || ( mode === 'list' && icon === 'left')" class="checkbox__inner"  :style="item.styleIcon">
-						<view class="checkbox__inner-icon"></view>
-					</view>
-					<view class="checklist-content" :class="{'list-content':mode === 'list' && icon ==='left'}">
-						<text class="checklist-text" :style="item.styleIconText">{{item[map.text]}}</text>
-						<view v-if="mode === 'list' && icon === 'right'" class="checkobx__list" :style="item.styleBackgroud"></view>
-					</view>
-				</label>
-			</checkbox-group>
-			<radio-group v-else class="checklist-group" :class="{'is-list':mode==='list','is-wrap':wrap}" @change="chagne">
-				<!-- -->
-				<label class="checklist-box" :class="['is--'+mode,item.selected?'is-checked':'',(disabled || !!item.disabled)?'is-disable':'',index!==0&&mode==='list'?'is-list-border':'']"
-				 :style="item.styleBackgroud" v-for="(item,index) in dataList" :key="index">
-					<radio class="hidden" hidden :disabled="disabled || item.disabled" :value="item[map.value]+''" :checked="item.selected" />
-					<view v-if="(mode !=='tag' && mode !== 'list') || ( mode === 'list' && icon === 'left')" class="radio__inner"
-					 :style="item.styleBackgroud">
-						<view class="radio__inner-icon" :style="item.styleIcon"></view>
-					</view>
-					<view class="checklist-content" :class="{'list-content':mode === 'list' && icon ==='left'}">
-						<text class="checklist-text" :style="item.styleIconText">{{item[map.text]}}</text>
-						<view v-if="mode === 'list' && icon === 'right'" :style="item.styleRightIcon" class="checkobx__list"></view>
-					</view>
-				</label>
-			</radio-group>
-		</template>
-	</view>
-</template>
-
-<script>
-	/**
-	 * DataChecklist 数据选择器
-	 * @description 通过数据渲染 checkbox 和 radio
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=xxx
-	 * @property {String} mode = [default| list | button | tag] 显示模式
-	 * @value default  	默认横排模式
-	 * @value list		列表模式
-	 * @value button	按钮模式
-	 * @value tag 		标签模式
-	 * @property {Boolean} multiple = [true|false] 是否多选
-	 * @property {Array|String|Number} value 默认值
-	 * @property {Array} localdata 本地数据 ,格式 [{text:'',value:''}]
-	 * @property {Number|String} min 最小选择个数 ,multiple为true时生效
-	 * @property {Number|String} max 最大选择个数 ,multiple为true时生效
-	 * @property {Boolean} wrap 是否换行显示
-	 * @property {String} icon = [left|right]  list 列表模式下icon显示位置
-	 * @property {Boolean} selectedColor 选中颜色
-	 * @property {Boolean} emptyText 没有数据时显示的文字 ,本地数据无效
-	 * @property {Boolean} selectedTextColor 选中文本颜色,如不填写则自动显示
-	 * @property {Object} map 字段映射, 默认 map={text:'text',value:'value'}
-	 * @value left 左侧显示
-	 * @value right 右侧显示
-	 * @event {Function} change  选中发生变化触发
-	 */
-
-	export default {
-		name: 'uniDataChecklist',
-		mixins: [uniCloud.mixinDatacom || {}],
-		emits:['input','update:modelValue','change'],
-		props: {
-			mode: {
-				type: String,
-				default: 'default'
-			},
-
-			multiple: {
-				type: Boolean,
-				default: false
-			},
-			value: {
-				type: [Array, String, Number],
-				default () {
-					return ''
-				}
-			},
-			// TODO vue3
-			modelValue: {
-				type: [Array, String, Number],
-				default() {
-					return '';
-				}
-			},
-			localdata: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			min: {
-				type: [Number, String],
-				default: ''
-			},
-			max: {
-				type: [Number, String],
-				default: ''
-			},
-			wrap: {
-				type: Boolean,
-				default: false
-			},
-			icon: {
-				type: String,
-				default: 'left'
-			},
-			selectedColor: {
-				type: String,
-				default: ''
-			},
-			selectedTextColor: {
-				type: String,
-				default: ''
-			},
-			emptyText:{
-				type: String,
-				default: '暂无数据'
-			},
-			disabled:{
-				type: Boolean,
-				default: false
-			},
-			map:{
-				type: Object,
-				default(){
-					return {
-						text:'text',
-						value:'value'
-					}
-				}
-			}
-		},
-		watch: {
-			localdata: {
-				handler(newVal) {
-					this.range = newVal
-					this.dataList = this.getDataList(this.getSelectedValue(newVal))
-				},
-				deep: true
-			},
-			mixinDatacomResData(newVal) {
-				this.range = newVal
-				this.dataList = this.getDataList(this.getSelectedValue(newVal))
-			},
-			value(newVal) {
-				this.dataList = this.getDataList(newVal)
-				// fix by mehaotian is_reset 在 uni-forms 中定义
-				// if(!this.is_reset){
-				// 	this.is_reset = false
-				// 	this.formItem && this.formItem.setValue(newVal)
-				// }
-			},
-			modelValue(newVal) {
-				this.dataList = this.getDataList(newVal);
-				// if(!this.is_reset){
-				// 	this.is_reset = false
-				// 	this.formItem && this.formItem.setValue(newVal)
-				// }
-			}
-		},
-		data() {
-			return {
-				dataList: [],
-				range: [],
-				contentText: {
-					contentdown: '查看更多',
-					contentrefresh: '加载中',
-					contentnomore: '没有更多'
-				},
-				isLocal:true,
-				styles: {
-					selectedColor: '#2979ff',
-					selectedTextColor: '#666',
-				},
-				isTop:0
-			};
-		},
-		computed:{
-			dataValue(){
-				if(this.value === '')return this.modelValue
-				if(this.modelValue === '') return this.value
-				return this.value
-			}
-		},
-		created() {
-			// this.form = this.getForm('uniForms')
-			// this.formItem = this.getForm('uniFormsItem')
-			// this.formItem && this.formItem.setValue(this.value)
-
-			// if (this.formItem) {
-			// 	this.isTop = 6
-			// 	if (this.formItem.name) {
-			// 		// 如果存在name添加默认值,否则formData 中不存在这个字段不校验
-			// 		if(!this.is_reset){
-			// 			this.is_reset = false
-			// 			this.formItem.setValue(this.dataValue)
-			// 		}
-			// 		this.rename = this.formItem.name
-			// 		this.form.inputChildrens.push(this)
-			// 	}
-			// }
-
-			if (this.localdata && this.localdata.length !== 0) {
-				this.isLocal = true
-				this.range = this.localdata
-				this.dataList = this.getDataList(this.getSelectedValue(this.range))
-			} else {
-				if (this.collection) {
-					this.isLocal = false
-					this.loadData()
-				}
-			}
-		},
-		methods: {
-			loadData() {
-				this.mixinDatacomGet().then(res=>{
-					this.mixinDatacomResData = res.result.data
-					if(this.mixinDatacomResData.length === 0){
-						this.isLocal = false
-						this.mixinDatacomErrorMessage = this.emptyText
-					}else{
-						this.isLocal = true
-					}
-				}).catch(err=>{
-					this.mixinDatacomErrorMessage = err.message
-				})
-			},
-			/**
-			 * 获取父元素实例
-			 */
-			getForm(name = 'uniForms') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-			chagne(e) {
-				const values = e.detail.value
-
-				let detail = {
-					value: [],
-					data: []
-				}
-
-				if (this.multiple) {
-					this.range.forEach(item => {
-
-						if (values.includes(item[this.map.value] + '')) {
-							detail.value.push(item[this.map.value])
-							detail.data.push(item)
-						}
-					})
-				} else {
-					const range = this.range.find(item => (item[this.map.value] + '') === values)
-					if (range) {
-						detail = {
-							value: range[this.map.value],
-							data: range
-						}
-					}
-				}
-				// this.formItem && this.formItem.setValue(detail.value)
-				// TODO 兼容 vue2
-				this.$emit('input', detail.value);
-				// // TOTO 兼容 vue3
-				this.$emit('update:modelValue', detail.value);
-				this.$emit('change', {
-					detail
-				})
-				if (this.multiple) {
-					// 如果 v-model 没有绑定 ,则走内部逻辑
-					// if (this.value.length === 0) {
-					this.dataList = this.getDataList(detail.value, true)
-					// }
-				} else {
-					this.dataList = this.getDataList(detail.value)
-				}
-			},
-
-			/**
-			 * 获取渲染的新数组
-			 * @param {Object} value 选中内容
-			 */
-			getDataList(value) {
-				// 解除引用关系,破坏原引用关系,避免污染源数据
-				let dataList = JSON.parse(JSON.stringify(this.range))
-				let list = []
-				if (this.multiple) {
-					if (!Array.isArray(value)) {
-						value = []
-					}
-				}
-				dataList.forEach((item, index) => {
-					item.disabled = item.disable || item.disabled || false
-					if (this.multiple) {
-						if (value.length > 0) {
-							let have = value.find(val => val === item[this.map.value])
-							item.selected = have !== undefined
-						} else {
-							item.selected = false
-						}
-					} else {
-						item.selected = value === item[this.map.value]
-					}
-
-					list.push(item)
-				})
-				return this.setRange(list)
-			},
-			/**
-			 * 处理最大最小值
-			 * @param {Object} list
-			 */
-			setRange(list) {
-				let selectList = list.filter(item => item.selected)
-				let min = Number(this.min) || 0
-				let max = Number(this.max) || ''
-				list.forEach((item, index) => {
-					if (this.multiple) {
-						if (selectList.length <= min) {
-							let have = selectList.find(val => val[this.map.value] === item[this.map.value])
-							if (have !== undefined) {
-								item.disabled = true
-							}
-						}
-
-						if (selectList.length >= max && max !== '') {
-							let have = selectList.find(val => val[this.map.value] === item[this.map.value])
-							if (have === undefined) {
-								item.disabled = true
-							}
-						}
-					}
-					this.setStyles(item, index)
-					list[index] = item
-				})
-				return list
-			},
-			/**
-			 * 设置 class
-			 * @param {Object} item
-			 * @param {Object} index
-			 */
-			setStyles(item, index) {
-				//  设置自定义样式
-				item.styleBackgroud = this.setStyleBackgroud(item)
-				item.styleIcon = this.setStyleIcon(item)
-				item.styleIconText = this.setStyleIconText(item)
-				item.styleRightIcon = this.setStyleRightIcon(item)
-			},
-
-			/**
-			 * 获取选中值
-			 * @param {Object} range
-			 */
-			getSelectedValue(range) {
-				if (!this.multiple) return this.dataValue
-				let selectedArr = []
-				range.forEach((item) => {
-					if (item.selected) {
-						selectedArr.push(item[this.map.value])
-					}
-				})
-				return this.dataValue.length > 0 ? this.dataValue : selectedArr
-			},
-
-			/**
-			 * 设置背景样式
-			 */
-			setStyleBackgroud(item) {
-				let styles = {}
-				let selectedColor = this.selectedColor?this.selectedColor:'#2979ff'
-				if (this.selectedColor) {
-					if (this.mode !== 'list') {
-						styles['border-color'] = item.selected?selectedColor:'#DCDFE6'
-					}
-					if (this.mode === 'tag') {
-						styles['background-color'] = item.selected? selectedColor:'#f5f5f5'
-					}
-				}
-				let classles = ''
-				for (let i in styles) {
-					classles += `${i}:${styles[i]};`
-				}
-				return classles
-			},
-			setStyleIcon(item) {
-				let styles = {}
-				let classles = ''
-				if (this.selectedColor) {
-					let selectedColor = this.selectedColor?this.selectedColor:'#2979ff'
-					styles['background-color'] = item.selected?selectedColor:'#fff'
-					styles['border-color'] = item.selected?selectedColor:'#DCDFE6'
-					
-					if(!item.selected && item.disabled){
-						styles['background-color'] = '#F2F6FC'
-						styles['border-color'] = item.selected?selectedColor:'#DCDFE6'
-					}
-				}
-				for (let i in styles) {
-					classles += `${i}:${styles[i]};`
-				}
-				return classles
-			},
-			setStyleIconText(item) {
-				let styles = {}
-				let classles = ''
-				if (this.selectedColor) {
-					let selectedColor = this.selectedColor?this.selectedColor:'#2979ff'
-					if (this.mode === 'tag') {
-						styles.color = item.selected?(this.selectedTextColor?this.selectedTextColor:'#fff'):'#666'
-					} else {
-						styles.color = item.selected?(this.selectedTextColor?this.selectedTextColor:selectedColor):'#666'
-					}
-					if(!item.selected && item.disabled){
-						styles.color = '#999'
-					}
-				}
-				for (let i in styles) {
-					classles += `${i}:${styles[i]};`
-				}
-				return classles
-			},
-			setStyleRightIcon(item) {
-				let styles = {}
-				let classles = ''
-				if (this.mode === 'list') {
-					styles['border-color'] = item.selected?this.styles.selectedColor:'#DCDFE6'
-				}
-				for (let i in styles) {
-					classles += `${i}:${styles[i]};`
-				}
-
-				return classles
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-primary: #2979ff !default;
-	$border-color: #DCDFE6;
-	$disable:0.4;
-
-	@mixin flex {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-	}
-
-	.uni-data-loading {
-		@include flex;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 36px;
-		padding-left: 10px;
-		color: #999;
-	}
-
-	.uni-data-checklist {
-		position: relative;
-		z-index: 0;
-		flex: 1;
-		// 多选样式
-		.checklist-group {
-			@include flex;
-			flex-direction: row;
-			flex-wrap: wrap;
-
-			&.is-list {
-				flex-direction: column;
-			}
-
-			.checklist-box {
-				@include flex;
-				flex-direction: row;
-				align-items: center;
-				position: relative;
-				margin: 5px 0;
-				margin-right: 25px;
-
-				.hidden {
-					position: absolute;
-					opacity: 0;
-				}
-
-				// 文字样式
-				.checklist-content {
-					@include flex;
-					flex: 1;
-					flex-direction: row;
-					align-items: center;
-					justify-content: space-between;
-					.checklist-text {
-						font-size: 14px;
-						color: #666;
-						margin-left: 5px;
-						line-height: 14px;
-					}
-
-					.checkobx__list {
-						border-right-width: 1px;
-						border-right-color: #007aff;
-						border-right-style: solid;
-						border-bottom-width:1px;
-						border-bottom-color: #007aff;
-						border-bottom-style: solid;
-						height: 12px;
-						width: 6px;
-						left: -5px;
-						transform-origin: center;
-						transform: rotate(45deg);
-						opacity: 0;
-					}
-				}
-
-				// 多选样式
-				.checkbox__inner {
-					/* #ifndef APP-NVUE */
-					flex-shrink: 0;
-					box-sizing: border-box;
-					/* #endif */
-					position: relative;
-					width: 16px;
-					height: 16px;
-					border: 1px solid $border-color;
-					border-radius: 4px;
-					background-color: #fff;
-					z-index: 1;
-					.checkbox__inner-icon {
-						position: absolute;
-						/* #ifdef APP-NVUE */
-						top: 2px;
-						/* #endif */
-						/* #ifndef APP-NVUE */
-						top: 1px;
-						/* #endif */
-						left: 5px;
-						height: 8px;
-						width: 4px;
-						border-right-width: 1px;
-						border-right-color: #fff;
-						border-right-style: solid;
-						border-bottom-width:1px ;
-						border-bottom-color: #fff;
-						border-bottom-style: solid;
-						opacity: 0;
-						transform-origin: center;
-						transform: rotate(40deg);
-					}
-				}
-
-				// 单选样式
-				.radio__inner {
-					@include flex;
-					/* #ifndef APP-NVUE */
-					flex-shrink: 0;
-					box-sizing: border-box;
-					/* #endif */
-					justify-content: center;
-					align-items: center;
-					position: relative;
-					width: 16px;
-					height: 16px;
-					border: 1px solid $border-color;
-					border-radius: 16px;
-					background-color: #fff;
-					z-index: 1;
-
-					.radio__inner-icon {
-						width: 8px;
-						height: 8px;
-						border-radius: 10px;
-						opacity: 0;
-					}
-				}
-
-				// 默认样式
-				&.is--default {
-
-					// 禁用
-					&.is-disable {
-						/* #ifdef H5 */
-						cursor: not-allowed;
-						/* #endif */
-						.checkbox__inner {
-							background-color: #F2F6FC;
-							border-color: $border-color;
-							/* #ifdef H5 */
-							cursor: not-allowed;
-							/* #endif */
-						}
-
-						.radio__inner {
-							background-color: #F2F6FC;
-							border-color: $border-color;
-						}
-						.checklist-text {
-							color: #999;
-						}
-					}
-
-					// 选中
-					&.is-checked {
-						.checkbox__inner {
-							border-color: $uni-primary;
-							background-color: $uni-primary;
-
-							.checkbox__inner-icon {
-								opacity: 1;
-								transform: rotate(45deg);
-							}
-						}
-						.radio__inner {
-							border-color: $uni-primary;
-							.radio__inner-icon {
-								opacity: 1;
-								background-color: $uni-primary;
-							}
-						}
-						.checklist-text {
-							color: $uni-primary;
-						}
-						// 选中禁用
-						&.is-disable {
-							.checkbox__inner {
-								opacity: $disable;
-							}
-
-							.checklist-text {
-								opacity: $disable;
-							}
-							.radio__inner {
-								opacity: $disable;
-							}
-						}
-					}
-				}
-
-				// 按钮样式
-				&.is--button {
-					margin-right: 10px;
-					padding: 5px 10px;
-					border: 1px $border-color solid;
-					border-radius: 3px;
-					transition: border-color 0.2s;
-
-					// 禁用
-					&.is-disable {
-						/* #ifdef H5 */
-						cursor: not-allowed;
-						/* #endif */
-						border: 1px #eee solid;
-						opacity: $disable;
-						.checkbox__inner {
-							background-color: #F2F6FC;
-							border-color: $border-color;
-							/* #ifdef H5 */
-							cursor: not-allowed;
-							/* #endif */
-						}
-						.radio__inner {
-							background-color: #F2F6FC;
-							border-color: $border-color;
-							/* #ifdef H5 */
-							cursor: not-allowed;
-							/* #endif */
-						}
-						.checklist-text {
-							color: #999;
-						}
-					}
-
-					&.is-checked {
-						border-color: $uni-primary;
-						.checkbox__inner {
-							border-color: $uni-primary;
-							background-color: $uni-primary;
-							.checkbox__inner-icon {
-								opacity: 1;
-								transform: rotate(45deg);
-							}
-						}
-
-						.radio__inner {
-							border-color: $uni-primary;
-
-							.radio__inner-icon {
-								opacity: 1;
-								background-color: $uni-primary;
-							}
-						}
-
-						.checklist-text {
-							color: $uni-primary;
-						}
-
-						// 选中禁用
-						&.is-disable {
-							opacity: $disable;
-						}
-					}
-				}
-
-				// 标签样式
-				&.is--tag {
-					margin-right: 10px;
-					padding: 5px 10px;
-					border: 1px $border-color solid;
-					border-radius: 3px;
-					background-color: #f5f5f5;
-
-					.checklist-text {
-						margin: 0;
-						color: #666;
-					}
-
-					// 禁用
-					&.is-disable {
-						/* #ifdef H5 */
-						cursor: not-allowed;
-						/* #endif */
-						opacity: $disable;
-					}
-
-					&.is-checked {
-						background-color: $uni-primary;
-						border-color: $uni-primary;
-
-						.checklist-text {
-							color: #fff;
-						}
-					}
-				}
-				// 列表样式
-				&.is--list {
-					/* #ifndef APP-NVUE */
-					display: flex;
-					/* #endif */
-					padding: 10px 15px;
-					padding-left: 0;
-					margin: 0;
-
-					&.is-list-border {
-						border-top: 1px #eee solid;
-					}
-
-					// 禁用
-					&.is-disable {
-						/* #ifdef H5 */
-						cursor: not-allowed;
-						/* #endif */
-						.checkbox__inner {
-							background-color: #F2F6FC;
-							border-color: $border-color;
-							/* #ifdef H5 */
-							cursor: not-allowed;
-							/* #endif */
-						}
-						.checklist-text {
-							color: #999;
-						}
-					}
-
-					&.is-checked {
-						.checkbox__inner {
-							border-color: $uni-primary;
-							background-color: $uni-primary;
-
-							.checkbox__inner-icon {
-								opacity: 1;
-								transform: rotate(45deg);
-							}
-						}
-						.radio__inner {
-							.radio__inner-icon {
-								opacity: 1;
-							}
-						}
-						.checklist-text {
-							color: $uni-primary;
-						}
-
-						.checklist-content {
-							.checkobx__list {
-								opacity: 1;
-								border-color: $uni-primary;
-							}
-						}
-
-						// 选中禁用
-						&.is-disable {
-							.checkbox__inner {
-								opacity: $disable;
-							}
-
-							.checklist-text {
-								opacity: $disable;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 45
node_modules/@dcloudio/uni-ui/lib/uni-data-picker/keypress.js

@@ -1,45 +0,0 @@
-// #ifdef H5
-export default {
-  name: 'Keypress',
-  props: {
-    disable: {
-      type: Boolean,
-      default: false
-    }
-  },
-  mounted () {
-    const keyNames = {
-      esc: ['Esc', 'Escape'],
-      tab: 'Tab',
-      enter: 'Enter',
-      space: [' ', 'Spacebar'],
-      up: ['Up', 'ArrowUp'],
-      left: ['Left', 'ArrowLeft'],
-      right: ['Right', 'ArrowRight'],
-      down: ['Down', 'ArrowDown'],
-      delete: ['Backspace', 'Delete', 'Del']
-    }
-    const listener = ($event) => {
-      if (this.disable) {
-        return
-      }
-      const keyName = Object.keys(keyNames).find(key => {
-        const keyName = $event.key
-        const value = keyNames[key]
-        return value === keyName || (Array.isArray(value) && value.includes(keyName))
-      })
-      if (keyName) {
-        // 避免和其他按键事件冲突
-        setTimeout(() => {
-          this.$emit(keyName, {})
-        }, 0)
-      }
-    }
-    document.addEventListener('keyup', listener)
-    this.$once('hook:beforeDestroy', () => {
-      document.removeEventListener('keyup', listener)
-    })
-  },
-	render: () => {}
-}
-// #endif

+ 0 - 551
node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.vue

@@ -1,551 +0,0 @@
-<template>
-  <view class="uni-data-tree">
-    <view class="uni-data-tree-input" @click="handleInput">
-      <slot :options="options" :data="inputSelected" :error="errorMessage">
-        <view class="input-value" :class="{'input-value-border': border}">
-          <text v-if="errorMessage" class="selected-area error-text">{{errorMessage}}</text>
-          <view v-else-if="loading && !isOpened" class="selected-area">
-            <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more>
-          </view>
-          <scroll-view v-else-if="inputSelected.length" class="selected-area" scroll-x="true">
-            <view class="selected-list">
-              <view class="selected-item" v-for="(item,index) in inputSelected" :key="index">
-                <text class="text-color">{{item.text}}</text><text v-if="index<inputSelected.length-1"
-                  class="input-split-line">{{split}}</text>
-              </view>
-            </view>
-          </scroll-view>
-          <text v-else class="selected-area placeholder">{{placeholder}}</text>
-          <view v-if="clearIcon && !readonly && inputSelected.length" class="icon-clear" @click.stop="clear">
-            <uni-icons type="clear" color="#c0c4cc" size="24"></uni-icons>
-          </view>
-          <view class="arrow-area" v-if="(!clearIcon || !inputSelected.length) && !readonly ">
-            <view class="input-arrow"></view>
-          </view>
-        </view>
-      </slot>
-    </view>
-    <view class="uni-data-tree-cover" v-if="isOpened" @click="handleClose"></view>
-    <view class="uni-data-tree-dialog" v-if="isOpened">
-      <view class="uni-popper__arrow"></view>
-      <view class="dialog-caption">
-        <view class="title-area">
-          <text class="dialog-title">{{popupTitle}}</text>
-        </view>
-        <view class="dialog-close" @click="handleClose">
-          <view class="dialog-close-plus" data-id="close"></view>
-          <view class="dialog-close-plus dialog-close-rotate" data-id="close"></view>
-        </view>
-      </view>
-      <data-picker-view class="picker-view" ref="pickerView" v-model="dataValue" :localdata="localdata"
-        :preload="preload" :collection="collection" :field="field" :orderby="orderby" :where="where"
-        :step-searh="stepSearh" :self-field="selfField" :parent-field="parentField" :managed-mode="true" :map="map"
-        :ellipsis="ellipsis" @change="onchange" @datachange="ondatachange" @nodeclick="onnodeclick">
-      </data-picker-view>
-    </view>
-  </view>
-</template>
-
-<script>
-  import dataPicker from "../uni-data-pickerview/uni-data-picker.js"
-  import DataPickerView from "../uni-data-pickerview/uni-data-pickerview.vue"
-
-  /**
-   * DataPicker 级联选择
-   * @description 支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。
-   * @tutorial https://ext.dcloud.net.cn/plugin?id=3796
-   * @property {String} popup-title 弹出窗口标题
-   * @property {Array} localdata 本地数据,参考
-   * @property {Boolean} border = [true|false] 是否有边框
-   * @property {Boolean} readonly = [true|false] 是否仅读
-   * @property {Boolean} preload = [true|false] 是否预加载数据
-   * @value true 开启预加载数据,点击弹出窗口后显示已加载数据
-   * @value false 关闭预加载数据,点击弹出窗口后开始加载数据
-   * @property {Boolean} step-searh = [true|false] 是否分布查询
-   * @value true 启用分布查询,仅查询当前选中节点
-   * @value false 关闭分布查询,一次查询出所有数据
-   * @property {String|DBFieldString} self-field 分布查询当前字段名称
-   * @property {String|DBFieldString} parent-field 分布查询父字段名称
-   * @property {String|DBCollectionString} collection 表名
-   * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
-   * @property {String} orderby 排序字段及正序倒叙设置
-   * @property {String|JQLString} where 查询条件
-   * @event {Function} popupshow 弹出的选择窗口打开时触发此事件
-   * @event {Function} popuphide 弹出的选择窗口关闭时触发此事件
-   */
-  export default {
-    name: 'UniDataPicker',
-    emits: ['popupopened', 'popupclosed', 'nodeclick', 'input', 'change', 'update:modelValue','inputclick'],
-    mixins: [dataPicker],
-    components: {
-      DataPickerView
-    },
-    props: {
-      options: {
-        type: [Object, Array],
-        default () {
-          return {}
-        }
-      },
-      popupTitle: {
-        type: String,
-        default: '请选择'
-      },
-      placeholder: {
-        type: String,
-        default: '请选择'
-      },
-      heightMobile: {
-        type: String,
-        default: ''
-      },
-      readonly: {
-        type: Boolean,
-        default: false
-      },
-      clearIcon: {
-        type: Boolean,
-        default: true
-      },
-      border: {
-        type: Boolean,
-        default: true
-      },
-      split: {
-        type: String,
-        default: '/'
-      },
-      ellipsis: {
-        type: Boolean,
-        default: true
-      }
-    },
-    data() {
-      return {
-        isOpened: false,
-        inputSelected: []
-      }
-    },
-    created() {
-      this.$nextTick(() => {
-        this.load();
-      })
-    },
-    watch: {
-			localdata: {
-				handler() {
-					this.load()
-				},
-        deep: true
-			},
-    },
-    methods: {
-      clear() {
-        this._dispatchEvent([]);
-      },
-      onPropsChange() {
-        this._treeData = [];
-        this.selectedIndex = 0;
-
-        this.load();
-      },
-      load() {
-        if (this.readonly) {
-          this._processReadonly(this.localdata, this.dataValue);
-          return;
-        }
-
-        // 回显本地数据
-        if (this.isLocalData) {
-          this.loadData();
-          this.inputSelected = this.selected.slice(0);
-        } else if (this.isCloudDataList || this.isCloudDataTree) { // 回显 Cloud 数据
-          this.loading = true;
-          this.getCloudDataValue().then((res) => {
-            this.loading = false;
-            this.inputSelected = res;
-          }).catch((err) => {
-            this.loading = false;
-            this.errorMessage = err;
-          })
-        }
-      },
-      show() {
-        this.isOpened = true
-        setTimeout(() => {
-          this.$refs.pickerView.updateData({
-            treeData: this._treeData,
-            selected: this.selected,
-            selectedIndex: this.selectedIndex
-          })
-        }, 200)
-        this.$emit('popupopened')
-      },
-      hide() {
-        this.isOpened = false
-        this.$emit('popupclosed')
-      },
-      handleInput() {
-        if (this.readonly) {
-					this.$emit('inputclick')
-          return
-        }
-        this.show()
-      },
-      handleClose(e) {
-        this.hide()
-      },
-      onnodeclick(e) {
-        this.$emit('nodeclick', e)
-      },
-      ondatachange(e) {
-        this._treeData = this.$refs.pickerView._treeData
-      },
-      onchange(e) {
-        this.hide()
-        this.$nextTick(() => {
-          this.inputSelected = e;
-        })
-        this._dispatchEvent(e)
-      },
-      _processReadonly(dataList, value) {
-        var isTree = dataList.findIndex((item) => {
-          return item.children
-        })
-        if (isTree > -1) {
-          let inputValue
-          if (Array.isArray(value)) {
-            inputValue = value[value.length - 1]
-            if (typeof inputValue === 'object' && inputValue.value) {
-              inputValue = inputValue.value
-            }
-          } else {
-            inputValue = value
-          }
-          this.inputSelected = this._findNodePath(inputValue, this.localdata)
-          return
-        }
-
-        if (!this.hasValue) {
-          this.inputSelected = []
-          return
-        }
-
-        let result = []
-        for (let i = 0; i < value.length; i++) {
-          var val = value[i]
-          var item = dataList.find((v) => {
-            return v.value == val
-          })
-          if (item) {
-            result.push(item)
-          }
-        }
-        if (result.length) {
-          this.inputSelected = result
-        }
-      },
-      _filterForArray(data, valueArray) {
-        var result = []
-        for (let i = 0; i < valueArray.length; i++) {
-          var value = valueArray[i]
-          var found = data.find((item) => {
-            return item.value == value
-          })
-          if (found) {
-            result.push(found)
-          }
-        }
-        return result
-      },
-      _dispatchEvent(selected) {
-        let item = {}
-        if (selected.length) {
-          var value = new Array(selected.length)
-          for (var i = 0; i < selected.length; i++) {
-            value[i] = selected[i].value
-          }
-          item = selected[selected.length - 1]
-        } else {
-          item.value = ''
-        }
-        if (this.formItem) {
-          this.formItem.setValue(item.value)
-        }
-
-        this.$emit('input', item.value)
-        this.$emit('update:modelValue', item.value)
-        this.$emit('change', {
-          detail: {
-            value: selected
-          }
-        })
-      }
-    }
-  }
-</script>
-
-<style>
-  .uni-data-tree {
-    flex: 1;
-    position: relative;
-    font-size: 14px;
-  }
-
-  .error-text {
-    color: #DD524D;
-  }
-
-  .input-value {
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    align-items: center;
-    flex-wrap: nowrap;
-    font-size: 14px;
-    /* line-height: 35px; */
-    padding: 0 10px;
-    padding-right: 5px;
-    overflow: hidden;
-    height: 35px;
-    /* #ifndef APP-NVUE */
-    box-sizing: border-box;
-    /* #endif */
-  }
-
-  .input-value-border {
-    border: 1px solid #e5e5e5;
-    border-radius: 5px;
-  }
-
-  .selected-area {
-    flex: 1;
-    overflow: hidden;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-  }
-
-  .load-more {
-    /* #ifndef APP-NVUE */
-    margin-right: auto;
-    /* #endif */
-    /* #ifdef APP-NVUE */
-    width: 40px;
-    /* #endif */
-  }
-
-  .selected-list {
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    flex-wrap: nowrap;
-    /* padding: 0 5px; */
-  }
-
-  .selected-item {
-    flex-direction: row;
-    /* padding: 0 1px; */
-    /* #ifndef APP-NVUE */
-    white-space: nowrap;
-    /* #endif */
-  }
-
-  .text-color {
-    color: #333;
-  }
-
-  .placeholder {
-    color: grey;
-    font-size: 12px;
-  }
-
-  .input-split-line {
-    opacity: .5;
-  }
-
-  .arrow-area {
-    position: relative;
-    width: 20px;
-    /* #ifndef APP-NVUE */
-    margin-bottom: 5px;
-    margin-left: auto;
-    display: flex;
-    /* #endif */
-    justify-content: center;
-    transform: rotate(-45deg);
-    transform-origin: center;
-  }
-
-  .input-arrow {
-    width: 7px;
-    height: 7px;
-    border-left: 1px solid #999;
-    border-bottom: 1px solid #999;
-  }
-
-  .uni-data-tree-cover {
-    position: fixed;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    background-color: rgba(0, 0, 0, .4);
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: column;
-    z-index: 100;
-  }
-
-  .uni-data-tree-dialog {
-    position: fixed;
-    left: 0;
-    /* #ifndef APP-NVUE */
-    top: 20%;
-    /* #endif */
-    /* #ifdef APP-NVUE */
-    top: 200px;
-    /* #endif */
-    right: 0;
-    bottom: 0;
-    background-color: #FFFFFF;
-    border-top-left-radius: 10px;
-    border-top-right-radius: 10px;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: column;
-    z-index: 102;
-    overflow: hidden;
-    /* #ifdef APP-NVUE */
-    width: 750rpx;
-    /* #endif */
-  }
-
-  .dialog-caption {
-    position: relative;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    /* border-bottom: 1px solid #f0f0f0; */
-  }
-
-  .title-area {
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    align-items: center;
-    /* #ifndef APP-NVUE */
-    margin: auto;
-    /* #endif */
-    padding: 0 10px;
-  }
-
-  .dialog-title {
-    /* font-weight: bold; */
-    line-height: 44px;
-  }
-
-  .dialog-close {
-    position: absolute;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    align-items: center;
-    padding: 0 15px;
-  }
-
-  .dialog-close-plus {
-    width: 16px;
-    height: 2px;
-    background-color: #666;
-    border-radius: 2px;
-    transform: rotate(45deg);
-  }
-
-  .dialog-close-rotate {
-    position: absolute;
-    transform: rotate(-45deg);
-  }
-
-  .picker-view {
-    flex: 1;
-    overflow: hidden;
-  }
-
-  .icon-clear {
-    display: flex;
-    align-items: center;
-  }
-
-  /* #ifdef H5 */
-  @media all and (min-width: 768px) {
-    .uni-data-tree-cover {
-      background-color: transparent;
-    }
-
-    .uni-data-tree-dialog {
-      position: absolute;
-      top: 55px;
-      height: auto;
-      min-height: 400px;
-      max-height: 50vh;
-      background-color: #fff;
-      border: 1px solid #EBEEF5;
-      box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-      border-radius: 4px;
-      overflow: unset;
-    }
-
-    .dialog-caption {
-      display: none;
-    }
-
-    .icon-clear {
-      /* margin-right: 5px; */
-    }
-  }
-
-  /* #endif */
-
-  /* picker 弹出层通用的指示小三角, todo:扩展至上下左右方向定位 */
-  /* #ifndef APP-NVUE */
-  .uni-popper__arrow,
-  .uni-popper__arrow::after {
-    position: absolute;
-    display: block;
-    width: 0;
-    height: 0;
-    border-color: transparent;
-    border-style: solid;
-    border-width: 6px;
-  }
-
-  .uni-popper__arrow {
-    filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
-    top: -6px;
-    left: 10%;
-    margin-right: 3px;
-    border-top-width: 0;
-    border-bottom-color: #EBEEF5;
-  }
-
-  .uni-popper__arrow::after {
-    content: " ";
-    top: 1px;
-    margin-left: -6px;
-    border-top-width: 0;
-    border-bottom-color: #fff;
-  }
-
-  /* #endif */
-</style>

+ 0 - 622
node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-picker.js

@@ -1,622 +0,0 @@
-export default {
-  props: {
-    localdata: {
-      type: [Array, Object],
-      default () {
-        return []
-      }
-    },
-    spaceInfo: {
-      type: Object,
-      default () {
-        return {}
-      }
-    },
-    collection: {
-      type: String,
-      default: ''
-    },
-    action: {
-      type: String,
-      default: ''
-    },
-    field: {
-      type: String,
-      default: ''
-    },
-    orderby: {
-      type: String,
-      default: ''
-    },
-    where: {
-      type: [String, Object],
-      default: ''
-    },
-    pageData: {
-      type: String,
-      default: 'add'
-    },
-    pageCurrent: {
-      type: Number,
-      default: 1
-    },
-    pageSize: {
-      type: Number,
-      default: 500
-    },
-    getcount: {
-      type: [Boolean, String],
-      default: false
-    },
-    getone: {
-      type: [Boolean, String],
-      default: false
-    },
-    gettree: {
-      type: [Boolean, String],
-      default: false
-    },
-    manual: {
-      type: Boolean,
-      default: false
-    },
-    value: {
-      type: [Array, String, Number],
-      default () {
-        return []
-      }
-    },
-    modelValue: {
-      type: [Array, String, Number],
-      default () {
-        return []
-      }
-    },
-    preload: {
-      type: Boolean,
-      default: false
-    },
-    stepSearh: {
-      type: Boolean,
-      default: true
-    },
-    selfField: {
-      type: String,
-      default: ''
-    },
-    parentField: {
-      type: String,
-      default: ''
-    },
-    multiple: {
-      type: Boolean,
-      default: false
-    },
-    map: {
-      type: Object,
-      default () {
-        return {
-          text: "text",
-          value: "value"
-        }
-      }
-    }
-  },
-  data() {
-    return {
-      loading: false,
-      errorMessage: '',
-      loadMore: {
-        contentdown: '',
-        contentrefresh: '',
-        contentnomore: ''
-      },
-      dataList: [],
-      selected: [],
-      selectedIndex: 0,
-      page: {
-        current: this.pageCurrent,
-        size: this.pageSize,
-        count: 0
-      }
-    }
-  },
-  computed: {
-    isLocalData() {
-      return !this.collection.length;
-    },
-    isCloudData() {
-      return this.collection.length > 0;
-    },
-    isCloudDataList() {
-      return (this.isCloudData && (!this.parentField && !this.selfField));
-    },
-    isCloudDataTree() {
-      return (this.isCloudData && this.parentField && this.selfField);
-    },
-    dataValue() {
-      let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null ||
-        this.modelValue !== undefined);
-      return isModelValue ? this.modelValue : this.value;
-    },
-    hasValue() {
-      if (typeof this.dataValue === 'number') {
-        return true
-      }
-      return (this.dataValue != null) && (this.dataValue.length > 0)
-    }
-  },
-  created() {
-    this.$watch(() => {
-      var al = [];
-      ['pageCurrent',
-        'pageSize',
-        'spaceInfo',
-        'value',
-        'modelValue',
-        'localdata',
-        'collection',
-        'action',
-        'field',
-        'orderby',
-        'where',
-        'getont',
-        'getcount',
-        'gettree'
-      ].forEach(key => {
-        al.push(this[key])
-      });
-      return al
-    }, (newValue, oldValue) => {
-      let needReset = false
-      for (let i = 2; i < newValue.length; i++) {
-        if (newValue[i] != oldValue[i]) {
-          needReset = true
-          break
-        }
-      }
-      if (newValue[0] != oldValue[0]) {
-        this.page.current = this.pageCurrent
-      }
-      this.page.size = this.pageSize
-
-      this.onPropsChange()
-    })
-    this._treeData = []
-  },
-  methods: {
-    onPropsChange() {
-      this._treeData = [];
-    },
-
-    // 填充 pickview 数据
-    async loadData() {
-      if (this.isLocalData) {
-        this.loadLocalData();
-      } else if (this.isCloudDataList) {
-        this.loadCloudDataList();
-      } else if (this.isCloudDataTree) {
-        this.loadCloudDataTree();
-      }
-    },
-
-    // 加载本地数据
-    async loadLocalData() {
-      this._treeData = [];
-      this._extractTree(this.localdata, this._treeData);
-
-      let inputValue = this.dataValue;
-      if (inputValue === undefined) {
-        return;
-      }
-
-      if (Array.isArray(inputValue)) {
-        inputValue = inputValue[inputValue.length - 1];
-        if (typeof inputValue === 'object' && inputValue[this.map.value]) {
-          inputValue = inputValue[this.map.value];
-        }
-      }
-
-      this.selected = this._findNodePath(inputValue, this.localdata);
-    },
-
-    // 加载 Cloud 数据 (单列)
-    async loadCloudDataList() {
-      if (this.loading) {
-        return;
-      }
-      this.loading = true;
-
-      try {
-        let response = await this.getCommand();
-        let responseData = response.result.data;
-
-        this._treeData = responseData;
-
-        this._updateBindData();
-        this._updateSelected();
-
-        this.onDataChange();
-      } catch (e) {
-        this.errorMessage = e;
-      } finally {
-        this.loading = false;
-      }
-    },
-
-    // 加载 Cloud 数据 (树形)
-    async loadCloudDataTree() {
-      if (this.loading) {
-        return;
-      }
-      this.loading = true;
-
-      try {
-        let commandOptions = {
-          field: this._cloudDataPostField(),
-          where: this._cloudDataTreeWhere()
-        };
-        if (this.gettree) {
-          commandOptions.startwith = `${this.selfField}=='${this.dataValue}'`;
-        }
-
-        let response = await this.getCommand(commandOptions);
-        let responseData = response.result.data;
-
-        this._treeData = responseData;
-        this._updateBindData();
-        this._updateSelected();
-
-        this.onDataChange();
-      } catch (e) {
-        this.errorMessage = e;
-      } finally {
-        this.loading = false;
-      }
-    },
-
-    // 加载 Cloud 数据 (节点)
-    async loadCloudDataNode(callback) {
-      if (this.loading) {
-        return;
-      }
-      this.loading = true;
-
-      try {
-        let commandOptions = {
-          field: this._cloudDataPostField(),
-          where: this._cloudDataNodeWhere()
-        };
-
-        let response = await this.getCommand(commandOptions);
-        let responseData = response.result.data;
-
-        callback(responseData);
-      } catch (e) {
-        this.errorMessage = e;
-      } finally {
-        this.loading = false;
-      }
-    },
-
-    // 回显 Cloud 数据
-    getCloudDataValue() {
-      if (this.isCloudDataList) {
-        return this.getCloudDataListValue();
-      }
-
-      if (this.isCloudDataTree) {
-        return this.getCloudDataTreeValue();
-      }
-    },
-
-    // 回显 Cloud 数据 (单列)
-    getCloudDataListValue() {
-      // 根据 field's as value标识匹配 where 条件
-      let where = [];
-      let whereField = this._getForeignKeyByField();
-      if (whereField) {
-        where.push(`${whereField} == '${this.dataValue}'`)
-      }
-
-      where = where.join(' || ');
-
-      if (this.where) {
-        where = `(${this.where}) && (${where})`
-      }
-
-      return this.getCommand({
-        field: this._cloudDataPostField(),
-        where
-      }).then((res) => {
-        this.selected = res.result.data;
-        return res.result.data;
-      });
-    },
-
-    // 回显 Cloud 数据 (树形)
-    getCloudDataTreeValue() {
-      return this.getCommand({
-        field: this._cloudDataPostField(),
-        getTreePath: {
-          startWith: `${this.selfField}=='${this.dataValue}'`
-        }
-      }).then((res) => {
-        let treePath = [];
-        this._extractTreePath(res.result.data, treePath);
-        this.selected = treePath;
-        return treePath;
-      });
-    },
-
-    getCommand(options = {}) {
-      /* eslint-disable no-undef */
-      let db = uniCloud.database(this.spaceInfo)
-
-      const action = options.action || this.action
-      if (action) {
-        db = db.action(action)
-      }
-
-      const collection = options.collection || this.collection
-      db = db.collection(collection)
-
-      const where = options.where || this.where
-      if (!(!where || !Object.keys(where).length)) {
-        db = db.where(where)
-      }
-
-      const field = options.field || this.field
-      if (field) {
-        db = db.field(field)
-      }
-
-      const orderby = options.orderby || this.orderby
-      if (orderby) {
-        db = db.orderBy(orderby)
-      }
-
-      const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current
-      const size = options.pageSize !== undefined ? options.pageSize : this.page.size
-      const getCount = options.getcount !== undefined ? options.getcount : this.getcount
-      const getTree = options.gettree !== undefined ? options.gettree : this.gettree
-
-      const getOptions = {
-        getCount,
-        getTree
-      }
-      if (options.getTreePath) {
-        getOptions.getTreePath = options.getTreePath
-      }
-
-      db = db.skip(size * (current - 1)).limit(size).get(getOptions)
-
-      return db
-    },
-
-    _cloudDataPostField() {
-      let fields = [this.field];
-      if (this.parentField) {
-        fields.push(`${this.parentField} as parent_value`);
-      }
-      return fields.join(',');
-    },
-
-    _cloudDataTreeWhere() {
-      let result = []
-      let selected = this.selected
-      let parentField = this.parentField
-      if (parentField) {
-        result.push(`${parentField} == null || ${parentField} == ""`)
-      }
-      if (selected.length) {
-        for (var i = 0; i < selected.length - 1; i++) {
-          result.push(`${parentField} == '${selected[i].value}'`)
-        }
-      }
-
-      let where = []
-      if (this.where) {
-        where.push(`(${this.where})`)
-      }
-
-      if (result.length) {
-        where.push(`(${result.join(' || ')})`)
-      }
-
-      return where.join(' && ')
-    },
-
-    _cloudDataNodeWhere() {
-      let where = []
-      let selected = this.selected;
-      if (selected.length) {
-        where.push(`${this.parentField} == '${selected[selected.length - 1].value}'`);
-      }
-
-      where = where.join(' || ');
-
-      if (this.where) {
-        return `(${this.where}) && (${where})`
-      }
-
-      return where
-    },
-
-    _getWhereByForeignKey() {
-      let result = []
-      let whereField = this._getForeignKeyByField();
-      if (whereField) {
-        result.push(`${whereField} == '${this.dataValue}'`)
-      }
-
-      if (this.where) {
-        return `(${this.where}) && (${result.join(' || ')})`
-      }
-
-      return result.join(' || ')
-    },
-
-    _getForeignKeyByField() {
-      let fields = this.field.split(',');
-      let whereField = null;
-      for (let i = 0; i < fields.length; i++) {
-        const items = fields[i].split('as');
-        if (items.length < 2) {
-          continue;
-        }
-        if (items[1].trim() === 'value') {
-          whereField = items[0].trim();
-          break;
-        }
-      }
-      return whereField;
-    },
-
-    _updateBindData(node) {
-      const {
-        dataList,
-        hasNodes
-      } = this._filterData(this._treeData, this.selected)
-
-      let isleaf = this._stepSearh === false && !hasNodes
-
-      if (node) {
-        node.isleaf = isleaf
-      }
-
-      this.dataList = dataList
-      this.selectedIndex = dataList.length - 1
-
-      if (!isleaf && this.selected.length < dataList.length) {
-        this.selected.push({
-          value: null,
-          text: "请选择"
-        })
-      }
-
-      return {
-        isleaf,
-        hasNodes
-      }
-    },
-
-    _updateSelected() {
-      let dl = this.dataList
-      let sl = this.selected
-      let textField = this.map.text
-      let valueField = this.map.value
-      for (let i = 0; i < sl.length; i++) {
-        let value = sl[i].value
-        let dl2 = dl[i]
-        for (let j = 0; j < dl2.length; j++) {
-          let item2 = dl2[j]
-          if (item2[valueField] === value) {
-            sl[i].text = item2[textField]
-            break
-          }
-        }
-      }
-    },
-
-    _filterData(data, paths) {
-      let dataList = []
-      let hasNodes = true
-
-      dataList.push(data.filter((item) => {
-        return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '')
-      }))
-      for (let i = 0; i < paths.length; i++) {
-        let value = paths[i].value
-        let nodes = data.filter((item) => {
-          return item.parent_value === value
-        })
-
-        if (nodes.length) {
-          dataList.push(nodes)
-        } else {
-          hasNodes = false
-        }
-      }
-
-      return {
-        dataList,
-        hasNodes
-      }
-    },
-
-    _extractTree(nodes, result, parent_value) {
-      let list = result || []
-      let valueField = this.map.value
-      for (let i = 0; i < nodes.length; i++) {
-        let node = nodes[i]
-
-        let child = {}
-        for (let key in node) {
-          if (key !== 'children') {
-            child[key] = node[key]
-          }
-        }
-        if (parent_value !== null && parent_value !== undefined && parent_value !== '') {
-          child.parent_value = parent_value
-        }
-        result.push(child)
-
-        let children = node.children
-        if (children) {
-          this._extractTree(children, result, node[valueField])
-        }
-      }
-    },
-
-    _extractTreePath(nodes, result) {
-      let list = result || []
-      for (let i = 0; i < nodes.length; i++) {
-        let node = nodes[i]
-
-        let child = {}
-        for (let key in node) {
-          if (key !== 'children') {
-            child[key] = node[key]
-          }
-        }
-        result.push(child)
-
-        let children = node.children
-        if (children) {
-          this._extractTreePath(children, result)
-        }
-      }
-    },
-
-    _findNodePath(key, nodes, path = []) {
-      let textField = this.map.text
-      let valueField = this.map.value
-      for (let i = 0; i < nodes.length; i++) {
-        let node = nodes[i]
-        let children = node.children
-        let text = node[textField]
-        let value = node[valueField]
-
-        path.push({
-          value,
-          text
-        })
-
-        if (value === key) {
-          return path
-        }
-
-        if (children) {
-          const p = this._findNodePath(key, children, path)
-          if (p.length) {
-            return p
-          }
-        }
-
-        path.pop()
-      }
-      return []
-    }
-  }
-}

+ 0 - 323
node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.vue

@@ -1,323 +0,0 @@
-<template>
-  <view class="uni-data-pickerview">
-    <scroll-view v-if="!isCloudDataList" class="selected-area" scroll-x="true">
-      <view class="selected-list">
-          <view 
-            class="selected-item"
-            v-for="(item,index) in selected"
-            :key="index"
-            :class="{
-              'selected-item-active':index == selectedIndex
-            }"
-            @click="handleSelect(index)"
-          >
-            <text>{{item.text || ''}}</text>
-          </view>
-      </view>
-    </scroll-view>
-    <view class="tab-c">
-      <scroll-view class="list" :scroll-y="true">
-        <view class="item" :class="{'is-disabled': !!item.disable}" v-for="(item, j) in dataList[selectedIndex]" :key="j"
-          @click="handleNodeClick(item, selectedIndex, j)">
-          <text class="item-text">{{item[map.text]}}</text>
-          <view class="check" v-if="selected.length > selectedIndex && item[map.value] == selected[selectedIndex].value"></view>
-        </view>
-      </scroll-view>
-
-      <view class="loading-cover" v-if="loading">
-        <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more>
-      </view>
-      <view class="error-message" v-if="errorMessage">
-        <text class="error-text">{{errorMessage}}</text>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-  import dataPicker from "./uni-data-picker.js"
-
-  /**
-   * DataPickerview
-   * @description uni-data-pickerview
-   * @tutorial https://ext.dcloud.net.cn/plugin?id=3796
-   * @property {Array} localdata 本地数据,参考
-   * @property {Boolean} step-searh = [true|false] 是否分布查询
-   * @value true 启用分布查询,仅查询当前选中节点
-   * @value false 关闭分布查询,一次查询出所有数据
-   * @property {String|DBFieldString} self-field 分布查询当前字段名称
-   * @property {String|DBFieldString} parent-field 分布查询父字段名称
-   * @property {String|DBCollectionString} collection 表名
-   * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
-   * @property {String} orderby 排序字段及正序倒叙设置
-   * @property {String|JQLString} where 查询条件
-   */
-  export default {
-    name: 'UniDataPickerView',
-    emits: ['nodeclick', 'change', 'datachange', 'update:modelValue'],
-    mixins: [dataPicker],
-    props: {
-      managedMode: {
-        type: Boolean,
-        default: false
-      },
-      ellipsis: {
-        type: Boolean,
-        default: true
-      }
-    },
-    created() {
-      if (!this.managedMode) {
-        this.$nextTick(() => {
-          this.loadData();
-        })
-      }
-    },
-    methods: {
-      onPropsChange() {
-        this._treeData = [];
-        this.selectedIndex = 0;
-        this.$nextTick(() => {
-          this.loadData();
-        })
-      },
-      handleSelect(index) {
-        this.selectedIndex = index;
-      },
-      handleNodeClick(item, i, j) {
-        if (item.disable) {
-          return;
-        }
-
-        const node = this.dataList[i][j];
-        const text = node[this.map.text];
-        const value = node[this.map.value];
-
-        if (i < this.selected.length - 1) {
-          this.selected.splice(i, this.selected.length - i)
-          this.selected.push({
-            text,
-            value
-          })
-        } else if (i === this.selected.length - 1) {
-          this.selected.splice(i, 1, {
-            text,
-            value
-          })
-        }
-
-        if (node.isleaf) {
-          this.onSelectedChange(node, node.isleaf)
-          return
-        }
-
-        const {
-          isleaf,
-          hasNodes
-        } = this._updateBindData()
-
-        // 本地数据
-        if (this.isLocalData) {
-          this.onSelectedChange(node, (!hasNodes || isleaf))
-        } else if (this.isCloudDataList) { // Cloud 数据 (单列)
-          this.onSelectedChange(node, true)
-        } else if (this.isCloudDataTree) { // Cloud 数据 (树形)
-          if (isleaf) {
-            this.onSelectedChange(node, node.isleaf)
-          } else if (!hasNodes) { // 请求一次服务器以确定是否为叶子节点
-            this.loadCloudDataNode((data) => {
-              if (!data.length) {
-                node.isleaf = true
-              } else {
-                this._treeData.push(...data)
-                this._updateBindData(node)
-              }
-              this.onSelectedChange(node, node.isleaf)
-            })
-          }
-        }
-      },
-      updateData(data) {
-        this._treeData = data.treeData
-        this.selected = data.selected
-        if (!this._treeData.length) {
-          this.loadData()
-        } else {
-          //this.selected = data.selected
-          this._updateBindData()
-        }
-      },
-      onDataChange() {
-        this.$emit('datachange');
-      },
-      onSelectedChange(node, isleaf) {
-        if (isleaf) {
-          this._dispatchEvent()
-        }
-
-        if (node) {
-          this.$emit('nodeclick', node)
-        }
-      },
-      _dispatchEvent() {
-        this.$emit('change', this.selected.slice(0))
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-	$uni-primary: #007aff !default;
-
-	.uni-data-pickerview {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		overflow: hidden;
-		height: 100%;
-	}
-
-  .error-text {
-    color: #DD524D;
-  }
-
-  .loading-cover {
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    background-color: rgba(255, 255, 255, .5);
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: column;
-    align-items: center;
-    z-index: 1001;
-  }
-
-  .load-more {
-    /* #ifndef APP-NVUE */
-    margin: auto;
-    /* #endif */
-  }
-
-  .error-message {
-    background-color: #fff;
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    padding: 15px;
-    opacity: .9;
-    z-index: 102;
-  }
-
-  /* #ifdef APP-NVUE */
-  .selected-area {
-    width: 750rpx;
-  }
-  /* #endif */
-
-  .selected-list {
-    /* #ifndef APP-NVUE */
-    display: flex;
-    flex-wrap: nowrap;
-    /* #endif */
-    flex-direction: row;
-    padding: 0 5px;
-    border-bottom: 1px solid #f8f8f8;
-  }
-
-  .selected-item {
-    margin-left: 10px;
-    margin-right: 10px;
-    padding: 12px 0;
-    text-align: center;
-    /* #ifndef APP-NVUE */
-    white-space: nowrap;
-    /* #endif */
-  }
-
-  .selected-item-text-overflow {
-    width: 168px;
-    /* fix nvue */
-    overflow: hidden;
-    /* #ifndef APP-NVUE */
-    width: 6em;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    -o-text-overflow: ellipsis;
-    /* #endif */
-  }
-
-	.selected-item-active {
-		border-bottom: 2px solid $uni-primary;
-	}
-
-	.selected-item-text {
-		color: $uni-primary;
-	}
-
-  .tab-c {
-    position: relative;
-    flex: 1;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    overflow: hidden;
-  }
-
-  .list {
-    flex: 1;
-  }
-
-  .item {
-    padding: 12px 15px;
-    /* border-bottom: 1px solid #f0f0f0; */
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    justify-content: space-between;
-  }
-
-  .is-disabled {
-    opacity: .5;
-  }
-
-  .item-text {
-    /* flex: 1; */
-    color: #333333;
-  }
-
-  .item-text-overflow {
-    width: 280px;
-    /* fix nvue */
-    overflow: hidden;
-    /* #ifndef APP-NVUE */
-    width: 20em;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    -o-text-overflow: ellipsis;
-    /* #endif */
-  }
-
-	.check {
-		margin-right: 5px;
-		border: 2px solid $uni-primary;
-		border-left: 0;
-		border-top: 0;
-		height: 12px;
-		width: 6px;
-		transform-origin: center;
-		/* #ifndef APP-NVUE */
-		transition: all 0.3s;
-		/* #endif */
-		transform: rotate(45deg);
-	}
-</style>

+ 0 - 517
node_modules/@dcloudio/uni-ui/lib/uni-data-select/uni-data-select.vue

@@ -1,517 +0,0 @@
-<template>
-	<view class="uni-stat__select">
-		<span v-if="label" class="uni-label-text hide-on-phone">{{label + ':'}}</span>
-		<view class="uni-stat-box" :class="{'uni-stat__actived': current}">
-			<view class="uni-select" :class="{'uni-select--disabled':disabled}">
-				<view class="uni-select__input-box" @click="toggleSelector">
-					<view v-if="current" class="uni-select__input-text">{{current}}</view>
-					<view v-else class="uni-select__input-text uni-select__input-placeholder">{{typePlaceholder}}</view>
-					<view v-if="current && clear && !disabled" @click.stop="clearVal" >
-						<uni-icons type="clear" color="#c0c4cc" size="24"/>
-					</view>
-					<view v-else>
-						<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" />
-					</view>
-				</view>
-				<view class="uni-select--mask" v-if="showSelector" @click="toggleSelector" />
-				<view class="uni-select__selector" v-if="showSelector">
-					<view class="uni-popper__arrow"></view>
-					<scroll-view scroll-y="true" class="uni-select__selector-scroll">
-						<view class="uni-select__selector-empty" v-if="mixinDatacomResData.length === 0">
-							<text>{{emptyTips}}</text>
-						</view>
-						<view v-else class="uni-select__selector-item" v-for="(item,index) in mixinDatacomResData" :key="index"
-							@click="change(item)">
-							<text :class="{'uni-select__selector__disabled': item.disable}">{{formatItemName(item)}}</text>
-						</view>
-					</scroll-view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * DataChecklist 数据选择器
-	 * @description 通过数据渲染的下拉框组件
-	 * @tutorial https://uniapp.dcloud.io/component/uniui/uni-data-select
-	 * @property {String} value 默认值
-	 * @property {Array} localdata 本地数据 ,格式 [{text:'',value:''}]
-	 * @property {Boolean} clear 是否可以清空已选项
-	 * @property {Boolean} emptyText 没有数据时显示的文字 ,本地数据无效
-	 * @property {String} label 左侧标题
-	 * @property {String} placeholder 输入框的提示文字
-	 * @property {Boolean} disabled 是否禁用
-	 * @event {Function} change  选中发生变化触发
-	 */
-
-	export default {
-		name: "uni-data-select",
-		mixins: [uniCloud.mixinDatacom || {}],
-		props: {
-			localdata: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			modelValue: {
-				type: [String, Number],
-				default: ''
-			},
-			label: {
-				type: String,
-				default: ''
-			},
-			placeholder: {
-				type: String,
-				default: '请选择'
-			},
-			emptyTips: {
-				type: String,
-				default: '无选项'
-			},
-			clear: {
-				type: Boolean,
-				default: true
-			},
-			defItem: {
-				type: Number,
-				default: 0
-			},
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// 格式化输出 用法 field="_id as value, version as text, uni_platform as label" format="{label} - {text}"
-			format: {
-				type: String,
-				default: ''
-			},
-		},
-		data() {
-			return {
-				showSelector: false,
-				current: '',
-				mixinDatacomResData: [],
-				apps: [],
-				channels: [],
-				cacheKey: "uni-data-select-lastSelectedValue",
-			};
-		},
-		created() {
-			this.debounceGet = this.debounce(() => {
-				this.query();
-			}, 300);
-			if (this.collection && !this.localdata.length) {
-				this.debounceGet();
-			}
-		},
-		computed: {
-			typePlaceholder() {
-				const text = {
-					'opendb-stat-app-versions': '版本',
-					'opendb-app-channels': '渠道',
-					'opendb-app-list': '应用'
-				}
-				const common = this.placeholder
-				const placeholder = text[this.collection]
-				return placeholder ?
-					common + placeholder :
-					common
-			},
-			valueCom(){
-				// #ifdef VUE3
-				return this.modelValue;
-				// #endif
-				// #ifndef VUE3
-				return this.value;
-				// #endif
-			}
-		},
-		watch: {
-			localdata: {
-				immediate: true,
-				handler(val, old) {
-					if (Array.isArray(val) && old !== val) {
-						this.mixinDatacomResData = val
-					}
-				}
-			},
-			valueCom(val, old) {
-				this.initDefVal()
-			},
-			mixinDatacomResData: {
-				immediate: true,
-				handler(val) {
-					if (val.length) {
-						this.initDefVal()
-					}
-				}
-			}
-		},
-		methods: {
-			debounce(fn, time = 100){
-				let timer = null
-				return function(...args) {
-					if (timer) clearTimeout(timer)
-					timer = setTimeout(() => {
-						fn.apply(this, args)
-					}, time)
-				}
-			},
-			// 执行数据库查询
-			query(){
-				this.mixinDatacomEasyGet();
-			},
-			// 监听查询条件变更事件
-			onMixinDatacomPropsChange(){
-				if (this.collection) {
-					this.debounceGet();
-				}
-			},
-			initDefVal() {
-				let defValue = ''
-				if ((this.valueCom || this.valueCom === 0) && !this.isDisabled(this.valueCom)) {
-					defValue = this.valueCom
-				} else {
-					let strogeValue
-					if (this.collection) {
-						strogeValue = this.getCache()
-					}
-					if (strogeValue || strogeValue === 0) {
-						defValue = strogeValue
-					} else {
-						let defItem = ''
-						if (this.defItem > 0 && this.defItem <= this.mixinDatacomResData.length) {
-							defItem = this.mixinDatacomResData[this.defItem - 1].value
-						}
-						defValue = defItem
-					}
-          if (defValue || defValue === 0) {
-					  this.emit(defValue)
-          }
-				}
-				const def = this.mixinDatacomResData.find(item => item.value === defValue)
-				this.current = def ? this.formatItemName(def) : ''
-			},
-
-			/**
-			 * @param {[String, Number]} value
-			 * 判断用户给的 value 是否同时为禁用状态
-			 */
-			isDisabled(value) {
-				let isDisabled = false;
-
-				this.mixinDatacomResData.forEach(item => {
-					if (item.value === value) {
-						isDisabled = item.disable
-					}
-				})
-
-				return isDisabled;
-			},
-
-			clearVal() {
-				this.emit('')
-				if (this.collection) {
-					this.removeCache()
-				}
-			},
-			change(item) {
-				if (!item.disable) {
-					this.showSelector = false
-					this.current = this.formatItemName(item)
-					this.emit(item.value)
-				}
-			},
-			emit(val) {
-				this.$emit('input', val)
-				this.$emit('update:modelValue', val)
-				this.$emit('change', val)
-				if (this.collection) {
-					this.setCache(val);
-				}
-			},
-			toggleSelector() {
-				if (this.disabled) {
-					return
-				}
-
-				this.showSelector = !this.showSelector
-			},
-			formatItemName(item) {
-				let {
-					text,
-					value,
-					channel_code
-				} = item
-				channel_code = channel_code ? `(${channel_code})` : ''
-
-				if (this.format) {
-					// 格式化输出
-					let str = "";
-					str = this.format;
-					for (let key in item) {
-						str = str.replace(new RegExp(`{${key}}`,"g"),item[key]);
-					}
-					return str;
-				} else {
-					return this.collection.indexOf('app-list') > 0 ?
-						`${text}(${value})` :
-						(
-							text ?
-							text :
-							`未命名${channel_code}`
-						)
-				}
-			},
-			// 获取当前加载的数据
-			getLoadData(){
-				return this.mixinDatacomResData;
-			},
-			// 获取当前缓存key
-			getCurrentCacheKey(){
-				return this.collection;
-			},
-			// 获取缓存
-			getCache(name=this.getCurrentCacheKey()){
-				let cacheData = uni.getStorageSync(this.cacheKey) || {};
-				return cacheData[name];
-			},
-			// 设置缓存
-			setCache(value, name=this.getCurrentCacheKey()){
-				let cacheData = uni.getStorageSync(this.cacheKey) || {};
-				cacheData[name] = value;
-				uni.setStorageSync(this.cacheKey, cacheData);
-			},
-			// 删除缓存
-			removeCache(name=this.getCurrentCacheKey()){
-				let cacheData = uni.getStorageSync(this.cacheKey) || {};
-				delete cacheData[name];
-				uni.setStorageSync(this.cacheKey, cacheData);
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-base-color: #6a6a6a !default;
-	$uni-main-color: #333 !default;
-	$uni-secondary-color: #909399 !default;
-	$uni-border-3: #e5e5e5;
-
-
-	/* #ifndef APP-NVUE */
-	@media screen and (max-width: 500px) {
-		.hide-on-phone {
-			display: none;
-		}
-	}
-
-	/* #endif */
-	.uni-stat__select {
-		display: flex;
-		align-items: center;
-		// padding: 15px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-		width: 100%;
-		flex: 1;
-		box-sizing: border-box;
-	}
-
-	.uni-stat-box {
-		width: 100%;
-		flex: 1;
-	}
-
-	.uni-stat__actived {
-		width: 100%;
-		flex: 1;
-		// outline: 1px solid #2979ff;
-	}
-
-	.uni-label-text {
-		font-size: 14px;
-		font-weight: bold;
-		color: $uni-base-color;
-		margin: auto 0;
-		margin-right: 5px;
-	}
-
-	.uni-select {
-		font-size: 14px;
-		border: 1px solid $uni-border-3;
-		box-sizing: border-box;
-		border-radius: 4px;
-		padding: 0 5px;
-		padding-left: 10px;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		user-select: none;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		border-bottom: solid 1px $uni-border-3;
-		width: 100%;
-		flex: 1;
-		height: 35px;
-
-		&--disabled {
-			background-color: #f5f7fa;
-			cursor: not-allowed;
-		}
-	}
-
-	.uni-select__label {
-		font-size: 16px;
-		// line-height: 22px;
-		height: 35px;
-		padding-right: 10px;
-		color: $uni-secondary-color;
-	}
-
-	.uni-select__input-box {
-		height: 35px;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-select__input {
-		flex: 1;
-		font-size: 14px;
-		height: 22px;
-		line-height: 22px;
-	}
-
-	.uni-select__input-plac {
-		font-size: 14px;
-		color: $uni-secondary-color;
-	}
-
-	.uni-select__selector {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		/* #endif */
-		position: absolute;
-		top: calc(100% + 12px);
-		left: 0;
-		width: 100%;
-		background-color: #FFFFFF;
-		border: 1px solid #EBEEF5;
-		border-radius: 6px;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-		z-index: 3;
-		padding: 4px 0;
-	}
-
-	.uni-select__selector-scroll {
-		/* #ifndef APP-NVUE */
-		max-height: 200px;
-		box-sizing: border-box;
-		/* #endif */
-	}
-
-	/* #ifdef H5 */
-	@media (min-width: 768px) {
-		.uni-select__selector-scroll {
-			max-height: 600px;
-		}
-	}
-	/* #endif */
-
-	.uni-select__selector-empty,
-	.uni-select__selector-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		cursor: pointer;
-		/* #endif */
-		line-height: 35px;
-		font-size: 14px;
-		text-align: center;
-		/* border-bottom: solid 1px $uni-border-3; */
-		padding: 0px 10px;
-	}
-
-	.uni-select__selector-item:hover {
-		background-color: #f9f9f9;
-	}
-
-	.uni-select__selector-empty:last-child,
-	.uni-select__selector-item:last-child {
-		/* #ifndef APP-NVUE */
-		border-bottom: none;
-		/* #endif */
-	}
-
-	.uni-select__selector__disabled {
-		opacity: 0.4;
-		cursor: default;
-	}
-
-	/* picker 弹出层通用的指示小三角 */
-	.uni-popper__arrow,
-	.uni-popper__arrow::after {
-		position: absolute;
-		display: block;
-		width: 0;
-		height: 0;
-		border-color: transparent;
-		border-style: solid;
-		border-width: 6px;
-	}
-
-	.uni-popper__arrow {
-		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
-		top: -6px;
-		left: 10%;
-		margin-right: 3px;
-		border-top-width: 0;
-		border-bottom-color: #EBEEF5;
-	}
-
-	.uni-popper__arrow::after {
-		content: " ";
-		top: 1px;
-		margin-left: -6px;
-		border-top-width: 0;
-		border-bottom-color: #fff;
-	}
-
-	.uni-select__input-text {
-		// width: 280px;
-		width: 100%;
-		color: $uni-main-color;
-		white-space: nowrap;
-		text-overflow: ellipsis;
-		-o-text-overflow: ellipsis;
-		overflow: hidden;
-	}
-
-	.uni-select__input-placeholder {
-		color: $uni-base-color;
-		font-size: 12px;
-	}
-
-	.uni-select--mask {
-		position: fixed;
-		top: 0;
-		bottom: 0;
-		right: 0;
-		left: 0;
-		z-index: 2;
-	}
-</style>

+ 0 - 200
node_modules/@dcloudio/uni-ui/lib/uni-dateformat/date-format.js

@@ -1,200 +0,0 @@
-// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型
-function pad(str, length = 2) {
-	str += ''
-	while (str.length < length) {
-		str = '0' + str
-	}
-	return str.slice(-length)
-}
-
-const parser = {
-	yyyy: (dateObj) => {
-		return pad(dateObj.year, 4)
-	},
-	yy: (dateObj) => {
-		return pad(dateObj.year)
-	},
-	MM: (dateObj) => {
-		return pad(dateObj.month)
-	},
-	M: (dateObj) => {
-		return dateObj.month
-	},
-	dd: (dateObj) => {
-		return pad(dateObj.day)
-	},
-	d: (dateObj) => {
-		return dateObj.day
-	},
-	hh: (dateObj) => {
-		return pad(dateObj.hour)
-	},
-	h: (dateObj) => {
-		return dateObj.hour
-	},
-	mm: (dateObj) => {
-		return pad(dateObj.minute)
-	},
-	m: (dateObj) => {
-		return dateObj.minute
-	},
-	ss: (dateObj) => {
-		return pad(dateObj.second)
-	},
-	s: (dateObj) => {
-		return dateObj.second
-	},
-	SSS: (dateObj) => {
-		return pad(dateObj.millisecond, 3)
-	},
-	S: (dateObj) => {
-		return dateObj.millisecond
-	},
-}
-
-// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12
-function getDate(time) {
-	if (time instanceof Date) {
-		return time
-	}
-	switch (typeof time) {
-		case 'string':
-			{
-				// 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000
-				if (time.indexOf('T') > -1) {
-					return new Date(time)
-				}
-				return new Date(time.replace(/-/g, '/'))
-			}
-		default:
-			return new Date(time)
-	}
-}
-
-export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') {
-	if (!date && date !== 0) {
-		return ''
-	}
-	date = getDate(date)
-	const dateObj = {
-		year: date.getFullYear(),
-		month: date.getMonth() + 1,
-		day: date.getDate(),
-		hour: date.getHours(),
-		minute: date.getMinutes(),
-		second: date.getSeconds(),
-		millisecond: date.getMilliseconds()
-	}
-	const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/
-	let flag = true
-	let result = format
-	while (flag) {
-		flag = false
-		result = result.replace(tokenRegExp, function(matched) {
-			flag = true
-			return parser[matched](dateObj)
-		})
-	}
-	return result
-}
-
-export function friendlyDate(time, {
-	locale = 'zh',
-	threshold = [60000, 3600000],
-	format = 'yyyy/MM/dd hh:mm:ss'
-}) {
-	if (time === '-') {
-		return time
-	}
-	if (!time && time !== 0) {
-		return ''
-	}
-	const localeText = {
-		zh: {
-			year: '年',
-			month: '月',
-			day: '天',
-			hour: '小时',
-			minute: '分钟',
-			second: '秒',
-			ago: '前',
-			later: '后',
-			justNow: '刚刚',
-			soon: '马上',
-			template: '{num}{unit}{suffix}'
-		},
-		en: {
-			year: 'year',
-			month: 'month',
-			day: 'day',
-			hour: 'hour',
-			minute: 'minute',
-			second: 'second',
-			ago: 'ago',
-			later: 'later',
-			justNow: 'just now',
-			soon: 'soon',
-			template: '{num} {unit} {suffix}'
-		}
-	}
-	const text = localeText[locale] || localeText.zh
-	let date = getDate(time)
-	let ms = date.getTime() - Date.now()
-	let absMs = Math.abs(ms)
-	if (absMs < threshold[0]) {
-		return ms < 0 ? text.justNow : text.soon
-	}
-	if (absMs >= threshold[1]) {
-		return formatDate(date, format)
-	}
-	let num
-	let unit
-	let suffix = text.later
-	if (ms < 0) {
-		suffix = text.ago
-		ms = -ms
-	}
-	const seconds = Math.floor((ms) / 1000)
-	const minutes = Math.floor(seconds / 60)
-	const hours = Math.floor(minutes / 60)
-	const days = Math.floor(hours / 24)
-	const months = Math.floor(days / 30)
-	const years = Math.floor(months / 12)
-	switch (true) {
-		case years > 0:
-			num = years
-			unit = text.year
-			break
-		case months > 0:
-			num = months
-			unit = text.month
-			break
-		case days > 0:
-			num = days
-			unit = text.day
-			break
-		case hours > 0:
-			num = hours
-			unit = text.hour
-			break
-		case minutes > 0:
-			num = minutes
-			unit = text.minute
-			break
-		default:
-			num = seconds
-			unit = text.second
-			break
-	}
-
-	if (locale === 'en') {
-		if (num === 1) {
-			num = 'a'
-		} else {
-			unit += 's'
-		}
-	}
-
-	return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g,
-		suffix)
-}

+ 0 - 88
node_modules/@dcloudio/uni-ui/lib/uni-dateformat/uni-dateformat.vue

@@ -1,88 +0,0 @@
-<template>
-	<text>{{dateShow}}</text>
-</template>
-
-<script>
-	import {friendlyDate} from './date-format.js'
-	/**
-	 * Dateformat 日期格式化
-	 * @description 日期格式化组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3279
-	 * @property {Object|String|Number} date 日期对象/日期字符串/时间戳
-	 * @property {String} locale 格式化使用的语言
-	 * 	@value zh 中文
-	 * 	@value en 英文
-	 * @property {Array} threshold 应用不同类型格式化的阈值
-	 * @property {String} format 输出日期字符串时的格式
-	 */
-	export default {
-		name: 'uniDateformat',
-		props: {
-			date: {
-				type: [Object, String, Number],
-				default () {
-					return '-'
-				}
-			},
-			locale: {
-				type: String,
-				default: 'zh',
-			},
-			threshold: {
-				type: Array,
-				default () {
-					return [0, 0]
-				}
-			},
-			format: {
-				type: String,
-				default: 'yyyy/MM/dd hh:mm:ss'
-			},
-			// refreshRate使用不当可能导致性能问题,谨慎使用
-			refreshRate: {
-				type: [Number, String],
-				default: 0
-			}
-		},
-		data() {
-			return {
-				refreshMark: 0
-			}
-		},
-		computed: {
-			dateShow() {
-				this.refreshMark
-				return friendlyDate(this.date, {
-					locale: this.locale,
-					threshold: this.threshold,
-					format: this.format
-				})
-			}
-		},
-		watch: {
-			refreshRate: {
-				handler() {
-					this.setAutoRefresh()
-				},
-				immediate: true
-			}
-		},
-		methods: {
-			refresh() {
-				this.refreshMark++
-			},
-			setAutoRefresh() {
-				clearInterval(this.refreshInterval)
-				if (this.refreshRate) {
-					this.refreshInterval = setInterval(() => {
-						this.refresh()
-					}, parseInt(this.refreshRate))
-				}
-			}
-		}
-	}
-</script>
-
-<style>
-
-</style>

+ 0 - 177
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar-item.vue

@@ -1,177 +0,0 @@
-<template>
-	<view class="uni-calendar-item__weeks-box" :class="{
-		'uni-calendar-item--disable':weeks.disable,
-		'uni-calendar-item--before-checked-x':weeks.beforeMultiple,
-		'uni-calendar-item--multiple': weeks.multiple,
-		'uni-calendar-item--after-checked-x':weeks.afterMultiple,
-		}" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)">
-		<view class="uni-calendar-item__weeks-box-item" :class="{
-				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover),
-				'uni-calendar-item--checked-range-text': checkHover,
-				'uni-calendar-item--before-checked':weeks.beforeMultiple,
-				'uni-calendar-item--multiple': weeks.multiple,
-				'uni-calendar-item--after-checked':weeks.afterMultiple,
-				'uni-calendar-item--disable':weeks.disable,
-				}">
-			<text v-if="selected && weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
-			<text class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text">{{weeks.date}}</text>
-		</view>
-		<view :class="{'uni-calendar-item--today': weeks.isToday}"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			weeks: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			calendar: {
-				type: Object,
-				default: () => {
-					return {}
-				}
-			},
-			selected: {
-				type: Array,
-				default: () => {
-					return []
-				}
-			},
-			checkHover: {
-				type: Boolean,
-				default: false
-			}
-		},
-		methods: {
-			choiceDate(weeks) {
-				this.$emit('change', weeks)
-			},
-			handleMousemove(weeks) {
-				this.$emit('handleMouse', weeks)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-primary: #007aff !default;
-
-	.uni-calendar-item__weeks-box {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		margin: 1px 0;
-		position: relative;
-	}
-
-	.uni-calendar-item__weeks-box-text {
-		font-size: 14px;
-		// font-family: Lato-Bold, Lato;
-		font-weight: bold;
-		color: darken($color: $uni-primary, $amount: 40%);
-	}
-
-	.uni-calendar-item__weeks-box-item {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		width: 40px;
-		height: 40px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-
-	.uni-calendar-item__weeks-box-circle {
-		position: absolute;
-		top: 5px;
-		right: 5px;
-		width: 8px;
-		height: 8px;
-		border-radius: 8px;
-		background-color: #dd524d;
-
-	}
-
-	.uni-calendar-item__weeks-box .uni-calendar-item--disable {
-		cursor: default;
-	}
-
-	.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
-		color: #D1D1D1;
-	}
-
-	.uni-calendar-item--today {
-		position: absolute;
-		top: 10px;
-		right: 17%;
-		background-color: #dd524d;
-		width:6px;
-		height: 6px;
-		border-radius: 50%;
-	}
-
-	.uni-calendar-item--extra {
-		color: #dd524d;
-		opacity: 0.8;
-	}
-
-	.uni-calendar-item__weeks-box .uni-calendar-item--checked {
-		background-color: $uni-primary;
-		border-radius: 50%;
-		box-sizing: border-box;
-		border: 3px solid #fff;
-	}
-
-	.uni-calendar-item--checked .uni-calendar-item--checked-text {
-		color: #fff;
-	}
-
-	.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
-		color: #333;
-	}
-
-	.uni-calendar-item--multiple {
-		background-color:  #F6F7FC;
-		// color: #fff;
-	}
-
-	.uni-calendar-item--multiple .uni-calendar-item--before-checked,
-	.uni-calendar-item--multiple .uni-calendar-item--after-checked {
-		background-color: $uni-primary;
-		border-radius: 50%;
-		box-sizing: border-box;
-		border: 3px solid #F6F7FC;
-	}
-
-	.uni-calendar-item--before-checked .uni-calendar-item--checked-text,
-	.uni-calendar-item--after-checked .uni-calendar-item--checked-text {
-		color: #fff;
-	}
-
-	.uni-calendar-item--before-checked-x {
-		border-top-left-radius: 50px;
-		border-bottom-left-radius: 50px;
-		box-sizing: border-box;
-		background-color: #F6F7FC;
-	}
-
-	.uni-calendar-item--after-checked-x {
-		border-top-right-radius: 50px;
-		border-bottom-right-radius: 50px;
-		background-color: #F6F7FC;
-	}
-</style>

+ 0 - 938
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar.vue

@@ -1,938 +0,0 @@
-<template>
-	<view class="uni-calendar" @mouseleave="leaveCale">
-
-		<view v-if="!insert && show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}"
-			@click="maskClick"></view>
-
-		<view v-if="insert || show" class="uni-calendar__content"
-			:class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow, 'uni-calendar__content-mobile': aniMaskShow}">
-			<view class="uni-calendar__header" :class="{'uni-calendar__header-mobile' :!insert}">
-
-				<view class="uni-calendar__header-btn-box" @click.stop="changeMonth('pre')">
-					<view class="uni-calendar__header-btn uni-calendar--left"></view>
-				</view>
-
-				<picker mode="date" :value="date" fields="month" @change="bindDateChange">
-					<text
-						class="uni-calendar__header-text">{{ (nowDate.year||'') + yearText + ( nowDate.month||'') + monthText}}</text>
-				</picker>
-
-				<view class="uni-calendar__header-btn-box" @click.stop="changeMonth('next')">
-					<view class="uni-calendar__header-btn uni-calendar--right"></view>
-				</view>
-
-				<view v-if="!insert" class="dialog-close" @click="close">
-					<view class="dialog-close-plus" data-id="close"></view>
-					<view class="dialog-close-plus dialog-close-rotate" data-id="close"></view>
-				</view>
-			</view>
-			<view class="uni-calendar__box">
-
-				<view v-if="showMonth" class="uni-calendar__box-bg">
-					<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
-				</view>
-
-				<view class="uni-calendar__weeks" style="padding-bottom: 7px;">
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{SUNText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{MONText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{TUEText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{WEDText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{THUText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{FRIText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{SATText}}</text>
-					</view>
-				</view>
-
-				<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
-					<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
-						<calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar"
-							:selected="selected" :checkHover="range" @change="choiceDate"
-							@handleMouse="handleMouse">
-						</calendar-item>
-					</view>
-				</view>
-			</view>
-
-			<view v-if="!insert && !range && hasTime" class="uni-date-changed uni-calendar--fixed-top"
-				style="padding: 0 80px;">
-				<view class="uni-date-changed--time-date">{{tempSingleDate ? tempSingleDate : selectDateText}}</view>
-				<time-picker type="time" :start="timepickerStartTime" :end="timepickerEndTime" v-model="time"
-					:disabled="!tempSingleDate" :border="false" :hide-second="hideSecond" class="time-picker-style">
-				</time-picker>
-			</view>
-
-			<view v-if="!insert && range && hasTime" class="uni-date-changed uni-calendar--fixed-top">
-				<view class="uni-date-changed--time-start">
-					<view class="uni-date-changed--time-date">{{tempRange.before ? tempRange.before : startDateText}}
-					</view>
-					<time-picker type="time" :start="timepickerStartTime" v-model="timeRange.startTime" :border="false"
-						:hide-second="hideSecond" :disabled="!tempRange.before" class="time-picker-style">
-					</time-picker>
-				</view>
-				<view style="line-height: 50px;">
-					<uni-icons type="arrowthinright" color="#999"></uni-icons>
-				</view>
-				<view class="uni-date-changed--time-end">
-					<view class="uni-date-changed--time-date">{{tempRange.after ? tempRange.after : endDateText}}</view>
-					<time-picker type="time" :end="timepickerEndTime" v-model="timeRange.endTime" :border="false"
-						:hide-second="hideSecond" :disabled="!tempRange.after" class="time-picker-style">
-					</time-picker>
-				</view>
-			</view>
-
-			<view v-if="!insert" class="uni-date-changed uni-date-btn--ok">
-				<view class="uni-datetime-picker--btn" @click="confirm">{{confirmText}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import { Calendar, getDate, getTime } from './util.js';
-	import calendarItem from './calendar-item.vue'
-	import timePicker from './time-picker.vue'
-
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const { t } = initVueI18n(i18nMessages)
-
-	/**
-	 * Calendar 日历
-	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=56
-	 * @property {String} date 自定义当前时间,默认为今天
-	 * @property {String} startDate 日期选择范围-开始日期
-	 * @property {String} endDate 日期选择范围-结束日期
-	 * @property {Boolean} range 范围选择
-	 * @property {Boolean} insert = [true|false] 插入模式,默认为false
-	 * 	@value true 弹窗模式
-	 * 	@value false 插入模式
-	 * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
-	 * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
-	 * @property {Boolean} showMonth 是否选择月份为背景
-	 * @property {[String} defaultValue 选择器打开时默认显示的时间
-	 * @event {Function} change 日期改变,`insert :ture` 时生效
-	 * @event {Function} confirm 确认选择`insert :false` 时生效
-	 * @event {Function} monthSwitch 切换月份时触发
-	 * @example <uni-calendar :insert="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
-	 */
-	export default {
-		components: {
-			calendarItem,
-			timePicker
-		},
-		props: {
-			date: {
-				type: String,
-				default: ''
-			},
-			defTime: {
-				type: [String, Object],
-				default: ''
-			},
-			selectableTimes: {
-				type: [Object],
-				default () {
-					return {}
-				}
-			},
-			selected: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			startDate: {
-				type: String,
-				default: ''
-			},
-			endDate: {
-				type: String,
-				default: ''
-			},
-      startPlaceholder: {
-        type: String,
-				default: ''
-			},
-			endPlaceholder: {
-				type: String,
-				default: ''
-			},
-			range: {
-				type: Boolean,
-				default: false
-			},
-			hasTime: {
-				type: Boolean,
-				default: false
-			},
-			insert: {
-				type: Boolean,
-				default: true
-			},
-			showMonth: {
-				type: Boolean,
-				default: true
-			},
-			clearDate: {
-				type: Boolean,
-				default: true
-			},
-			checkHover: {
-				type: Boolean,
-				default: true
-			},
-			hideSecond: {
-				type: [Boolean],
-				default: false
-			},
-			pleStatus: {
-				type: Object,
-				default () {
-					return {
-						before: '',
-						after: '',
-						data: [],
-						fulldate: ''
-					}
-				}
-			},
-      defaultValue: {
-        type: [String, Object, Array],
-        default: ''
-      }
-		},
-		data() {
-			return {
-				show: false,
-				weeks: [],
-				calendar: {},
-				nowDate: {},
-				aniMaskShow: false,
-				firstEnter: true,
-				time: '',
-				timeRange: {
-					startTime: '',
-					endTime: ''
-				},
-				tempSingleDate: '',
-				tempRange: {
-					before: '',
-					after: ''
-				},
-        isPhone: false
-			}
-		},
-		watch: {
-			date: {
-				immediate: true,
-				handler(newVal) {
-					if (!this.range) {
-						this.tempSingleDate = newVal
-						setTimeout(() => {
-							this.init(newVal)
-						}, 100)
-					}
-				}
-			},
-			defTime: {
-				immediate: true,
-				handler(newVal) {
-					if (!this.range) {
-						this.time = newVal
-					} else {
-						this.timeRange.startTime = newVal.start
-						this.timeRange.endTime = newVal.end
-					}
-				}
-			},
-			startDate(val) {
-				// 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setStartDate(val)
-				this.cale.setDate(this.nowDate.fullDate)
-				this.weeks = this.cale.weeks
-			},
-			endDate(val) {
-				// 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setEndDate(val)
-				this.cale.setDate(this.nowDate.fullDate)
-				this.weeks = this.cale.weeks
-			},
-			selected(newVal) {
-				// 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
-				this.weeks = this.cale.weeks
-			},
-			pleStatus: {
-				immediate: true,
-				handler(newVal) {
-					const {
-						before,
-						after,
-						fulldate,
-						which
-					} = newVal
-					this.tempRange.before = before
-					this.tempRange.after = after
-					setTimeout(() => {
-						if (fulldate) {
-							this.cale.setHoverMultiple(fulldate)
-							if (before && after) {
-								this.cale.lastHover = true
-								if (this.rangeWithinMonth(after, before)) return
-								this.setDate(before)
-							} else {
-								this.cale.setMultiple(fulldate)
-								this.setDate(this.nowDate.fullDate)
-								this.calendar.fullDate = ''
-								this.cale.lastHover = false
-							}
-						} else {
-              // 字节小程序 watch 早于 created
-              if(!this.cale){
-                return
-              }
-
-							this.cale.setDefaultMultiple(before, after)
-							if (which === 'left' && before) {
-								this.setDate(before)
-								this.weeks = this.cale.weeks
-							} else if(after) {
-								this.setDate(after)
-								this.weeks = this.cale.weeks
-							}
-							this.cale.lastHover = true
-						}
-					}, 16)
-				}
-			}
-		},
-		computed: {
-			timepickerStartTime() {
-				const activeDate = this.range ? this.tempRange.before : this.calendar.fullDate
-				return activeDate === this.startDate ? this.selectableTimes.start : ''
-			},
-			timepickerEndTime() {
-				const activeDate = this.range ? this.tempRange.after : this.calendar.fullDate
-				return activeDate === this.endDate ? this.selectableTimes.end : ''
-			},
-			/**
-			 * for i18n
-			 */
-			selectDateText() {
-				return t("uni-datetime-picker.selectDate")
-			},
-			startDateText() {
-				return this.startPlaceholder || t("uni-datetime-picker.startDate")
-			},
-			endDateText() {
-				return this.endPlaceholder || t("uni-datetime-picker.endDate")
-			},
-			okText() {
-				return t("uni-datetime-picker.ok")
-			},
-			yearText() {
-				return t("uni-datetime-picker.year")
-			},
-			monthText() {
-				return t("uni-datetime-picker.month")
-			},
-			MONText() {
-				return t("uni-calender.MON")
-			},
-			TUEText() {
-				return t("uni-calender.TUE")
-			},
-			WEDText() {
-				return t("uni-calender.WED")
-			},
-			THUText() {
-				return t("uni-calender.THU")
-			},
-			FRIText() {
-				return t("uni-calender.FRI")
-			},
-			SATText() {
-				return t("uni-calender.SAT")
-			},
-			SUNText() {
-				return t("uni-calender.SUN")
-			},
-			confirmText() {
-				return t("uni-calender.confirm")
-			},
-		},
-		created() {
-			// 获取日历方法实例
-			this.cale = new Calendar({
-				selected: this.selected,
-				startDate: this.startDate,
-				endDate: this.endDate,
-				range: this.range,
-			})
-			// 选中某一天
-			this.init(this.date)
-		},
-    mounted(){
-      if(typeof navigator !== "undefined"){
-        this.isPhone = navigator.userAgent.toLowerCase().indexOf('mobile') !== -1
-        return
-      }
-      const { windowWidth } = uni.getSystemInfoSync()
-      this.isPhone = windowWidth <= 500
-    },
-		methods: {
-			leaveCale() {
-				this.firstEnter = true
-			},
-			handleMouse(weeks) {
-				if (weeks.disable) return
-				if (this.cale.lastHover) return
-				let {
-					before,
-					after
-				} = this.cale.multipleStatus
-				if (!before) return
-				this.calendar = weeks
-				// 设置范围选
-				this.cale.setHoverMultiple(this.calendar.fullDate)
-				this.weeks = this.cale.weeks
-				// hover时,进入一个日历,更新另一个
-				if (this.firstEnter) {
-					this.$emit('firstEnterCale', this.cale.multipleStatus)
-					this.firstEnter = false
-				}
-			},
-			rangeWithinMonth(A, B) {
-				const [yearA, monthA] = A.split('-')
-				const [yearB, monthB] = B.split('-')
-				return yearA === yearB && monthA === monthB
-			},
-			// 蒙版点击事件
-			maskClick() {
-        this.close()
-				this.$emit('maskClose')
-			},
-
-			clearCalender() {
-				if (this.range) {
-					this.timeRange.startTime = ''
-					this.timeRange.endTime = ''
-					this.tempRange.before = ''
-					this.tempRange.after = ''
-					this.cale.multipleStatus.before = ''
-					this.cale.multipleStatus.after = ''
-					this.cale.multipleStatus.data = []
-					this.cale.lastHover = false
-				} else {
-					this.time = ''
-					this.tempSingleDate = ''
-				}
-				this.calendar.fullDate = ''
-				this.setDate(new Date())
-			},
-
-			bindDateChange(e) {
-				const value = e.detail.value + '-1'
-				this.setDate(value)
-			},
-			/**
-			 * 初始化日期显示
-			 * @param {Object} date
-			 */
-			init(date) {
-        // 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setDate(date || new Date())
-				this.weeks = this.cale.weeks
-				this.nowDate = this.cale.getInfo(date)
-        this.calendar = {...this.nowDate}
-        if(!date){
-          // 优化date为空默认不选中今天
-          this.calendar.fullDate = ''
-          if(this.defaultValue && !this.range){
-            // 暂时只支持移动端非范围选择
-            const defaultDate = new Date(this.defaultValue)
-            const fullDate = getDate(defaultDate)
-            const year = defaultDate.getFullYear()
-            const month = defaultDate.getMonth()+1
-            const date = defaultDate.getDate()
-            const day = defaultDate.getDay()
-            this.calendar = {
-              fullDate,
-              year,
-              month,
-              date,
-              day
-            },
-            this.tempSingleDate = fullDate
-            this.time = getTime(defaultDate, this.hideSecond)
-          }
-        }
-			},
-			/**
-			 * 打开日历弹窗
-			 */
-			open() {
-				// 弹窗模式并且清理数据
-				if (this.clearDate && !this.insert) {
-					this.cale.cleanMultipleStatus()
-					this.init(this.date)
-				}
-				this.show = true
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this.aniMaskShow = true
-					}, 50)
-				})
-			},
-			/**
-			 * 关闭日历弹窗
-			 */
-			close() {
-				this.aniMaskShow = false
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this.show = false
-						this.$emit('close')
-					}, 300)
-				})
-			},
-			/**
-			 * 确认按钮
-			 */
-			confirm() {
-				this.setEmit('confirm')
-				this.close()
-			},
-			/**
-			 * 变化触发
-			 */
-			change() {
-				if (!this.insert) return
-				this.setEmit('change')
-			},
-			/**
-			 * 选择月份触发
-			 */
-			monthSwitch() {
-				let {
-					year,
-					month
-				} = this.nowDate
-				this.$emit('monthSwitch', {
-					year,
-					month: Number(month)
-				})
-			},
-			/**
-			 * 派发事件
-			 * @param {Object} name
-			 */
-			setEmit(name) {
-        if(!this.range){
-					if(!this.calendar.fullDate){
-					  this.calendar = this.cale.getInfo(new Date())
-					  this.tempSingleDate = this.calendar.fullDate
-					}
-					if(this.hasTime && !this.time) {
-					  this.time = getTime(new Date(), this.hideSecond)
-					}
-				}
-				let {
-					year,
-					month,
-					date,
-					fullDate,
-					extraInfo
-				} = this.calendar
-				this.$emit(name, {
-					range: this.cale.multipleStatus,
-					year,
-					month,
-					date,
-					time: this.time,
-					timeRange: this.timeRange,
-					fulldate: fullDate,
-					extraInfo: extraInfo || {}
-				})
-			},
-			/**
-			 * 选择天触发
-			 * @param {Object} weeks
-			 */
-			choiceDate(weeks) {
-				if (weeks.disable) return
-				this.calendar = weeks
-				this.calendar.userChecked = true
-				// 设置多选
-				this.cale.setMultiple(this.calendar.fullDate, true)
-				this.weeks = this.cale.weeks
-				this.tempSingleDate = this.calendar.fullDate
-				const beforeDate = new Date(this.cale.multipleStatus.before).getTime()
-				const afterDate = new Date(this.cale.multipleStatus.after).getTime()
-        // 这里返回的 before after 为什么要做替换?导致PC端如果开始结束日期都是今天,第一次选择开始日期早于今天,开始日期不更新
-				if (beforeDate > afterDate && afterDate && !this.isPhone) {
-					this.tempRange.before = this.cale.multipleStatus.after
-					this.tempRange.after = this.cale.multipleStatus.before
-				} else {
-					this.tempRange.before = this.cale.multipleStatus.before
-					this.tempRange.after = this.cale.multipleStatus.after
-				}
-				this.change()
-			},
-      changeMonth(type) {
-        let newDate
-        if(type === 'pre') {
-          newDate = this.cale.getPreMonthObj(this.nowDate.fullDate).fullDate
-        } else if(type === 'next') {
-          newDate = this.cale.getNextMonthObj(this.nowDate.fullDate).fullDate
-        }
-
-        this.setDate(newDate)
-				this.monthSwitch()
-      },
-			/**
-			 * 设置日期
-			 * @param {Object} date
-			 */
-			setDate(date) {
-				this.cale.setDate(date)
-				this.weeks = this.cale.weeks
-				this.nowDate = this.cale.getInfo(date)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-primary: #007aff !default;
-
-	.uni-calendar {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-calendar__mask {
-		position: fixed;
-		bottom: 0;
-		top: 0;
-		left: 0;
-		right: 0;
-		background-color: rgba(0, 0, 0, 0.4);
-		transition-property: opacity;
-		transition-duration: 0.3s;
-		opacity: 0;
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-calendar--mask-show {
-		opacity: 1
-	}
-
-	.uni-calendar--fixed {
-		position: fixed;
-		bottom: calc(var(--window-bottom));
-		left: 0;
-		right: 0;
-		transition-property: transform;
-		transition-duration: 0.3s;
-		transform: translateY(460px);
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-calendar--ani-show {
-		transform: translateY(0);
-	}
-
-	.uni-calendar__content {
-		background-color: #fff;
-	}
-
-	.uni-calendar__content-mobile {
-		border-top-left-radius: 10px;
-		border-top-right-radius: 10px;
-		box-shadow: 0px 0px 5px 3px rgba(0, 0, 0, 0.1);
-	}
-
-	.uni-calendar__header {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 50px;
-	}
-
-	.uni-calendar__header-mobile {
-		padding: 10px;
-		padding-bottom: 0;
-	}
-
-	.uni-calendar--fixed-top {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		border-top-color: rgba(0, 0, 0, 0.4);
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-calendar--fixed-width {
-		width: 50px;
-	}
-
-	.uni-calendar__backtoday {
-		position: absolute;
-		right: 0;
-		top: 25rpx;
-		padding: 0 5px;
-		padding-left: 10px;
-		height: 25px;
-		line-height: 25px;
-		font-size: 12px;
-		border-top-left-radius: 25px;
-		border-bottom-left-radius: 25px;
-		color: #fff;
-		background-color: #f1f1f1;
-	}
-
-	.uni-calendar__header-text {
-		text-align: center;
-		width: 100px;
-		font-size: 15px;
-		color: #666;
-	}
-
-	.uni-calendar__button-text {
-		text-align: center;
-		width: 100px;
-		font-size: 14px;
-		color: $uni-primary;
-		/* #ifndef APP-NVUE */
-		letter-spacing: 3px;
-		/* #endif */
-	}
-
-	.uni-calendar__header-btn-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		width: 50px;
-		height: 50px;
-	}
-
-	.uni-calendar__header-btn {
-		width: 9px;
-		height: 9px;
-		border-left-color: #808080;
-		border-left-style: solid;
-		border-left-width: 1px;
-		border-top-color: #555555;
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-calendar--left {
-		transform: rotate(-45deg);
-	}
-
-	.uni-calendar--right {
-		transform: rotate(135deg);
-	}
-
-
-	.uni-calendar__weeks {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-calendar__weeks-item {
-		flex: 1;
-	}
-
-	.uni-calendar__weeks-day {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		height: 40px;
-		border-bottom-color: #F5F5F5;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-	}
-
-	.uni-calendar__weeks-day-text {
-		font-size: 12px;
-		color: #B2B2B2;
-	}
-
-	.uni-calendar__box {
-		position: relative;
-		// padding: 0 10px;
-		padding-bottom: 7px;
-	}
-
-	.uni-calendar__box-bg {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-	}
-
-	.uni-calendar__box-bg-text {
-		font-size: 200px;
-		font-weight: bold;
-		color: #999;
-		opacity: 0.1;
-		text-align: center;
-		/* #ifndef APP-NVUE */
-		line-height: 1;
-		/* #endif */
-	}
-
-	.uni-date-changed {
-		padding: 0 10px;
-		// line-height: 50px;
-		text-align: center;
-		color: #333;
-		border-top-color: #DCDCDC;
-		;
-		border-top-style: solid;
-		border-top-width: 1px;
-		flex: 1;
-	}
-
-	.uni-date-btn--ok {
-		padding: 20px 15px;
-	}
-
-	.uni-date-changed--time-start {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-	}
-
-	.uni-date-changed--time-end {
-		/* #ifndef APP-NVUE */
-    display: flex;
-		/* #endif */
-		align-items: center;
-	}
-
-	.uni-date-changed--time-date {
-    color: #999;
-		line-height: 50px;
-    /* #ifdef MP-TOUTIAO */
-    font-size: 16px;
-    /* #endif */
-		margin-right: 5px;
-		// opacity: 0.6;
-	}
-
-	.time-picker-style {
-		// width: 62px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center
-	}
-
-	.mr-10 {
-		margin-right: 10px;
-	}
-
-	.dialog-close {
-		position: absolute;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		padding: 0 25px;
-		margin-top: 10px;
-	}
-
-	.dialog-close-plus {
-		width: 16px;
-		height: 2px;
-		background-color: #737987;
-		border-radius: 2px;
-		transform: rotate(45deg);
-	}
-
-	.dialog-close-rotate {
-		position: absolute;
-		transform: rotate(-45deg);
-	}
-
-	.uni-datetime-picker--btn {
-		border-radius: 100px;
-		height: 40px;
-		line-height: 40px;
-		background-color: $uni-primary;
-		color: #fff;
-		font-size: 16px;
-		letter-spacing: 2px;
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-datetime-picker--btn:active {
-		opacity: 0.7;
-	}
-	/* #endif */
-</style>

+ 0 - 22
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/en.json

@@ -1,22 +0,0 @@
-{
-	"uni-datetime-picker.selectDate": "select date",
-	"uni-datetime-picker.selectTime": "select time",
-	"uni-datetime-picker.selectDateTime": "select date and time",
-	"uni-datetime-picker.startDate": "start date",
-	"uni-datetime-picker.endDate": "end date",
-	"uni-datetime-picker.startTime": "start time",
-	"uni-datetime-picker.endTime": "end time",
-	"uni-datetime-picker.ok": "ok",
-	"uni-datetime-picker.clear": "clear",
-	"uni-datetime-picker.cancel": "cancel",
-	"uni-datetime-picker.year": "-",
-	"uni-datetime-picker.month": "",
-	"uni-calender.MON": "MON",
-	"uni-calender.TUE": "TUE",
-	"uni-calender.WED": "WED",
-	"uni-calender.THU": "THU",
-	"uni-calender.FRI": "FRI",
-	"uni-calender.SAT": "SAT",
-	"uni-calender.SUN": "SUN",
-	"uni-calender.confirm": "confirm"
-}

+ 0 - 8
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 22
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hans.json

@@ -1,22 +0,0 @@
-{
-	"uni-datetime-picker.selectDate": "选择日期",
-	"uni-datetime-picker.selectTime": "选择时间",
-	"uni-datetime-picker.selectDateTime": "选择日期时间",
-	"uni-datetime-picker.startDate": "开始日期",
-	"uni-datetime-picker.endDate": "结束日期",
-	"uni-datetime-picker.startTime": "开始时间",
-	"uni-datetime-picker.endTime": "结束时间",
-	"uni-datetime-picker.ok": "确定",
-	"uni-datetime-picker.clear": "清除",
-	"uni-datetime-picker.cancel": "取消",
-	"uni-datetime-picker.year": "年",
-	"uni-datetime-picker.month": "月",
-	"uni-calender.SUN": "日",
-	"uni-calender.MON": "一",
-	"uni-calender.TUE": "二",
-	"uni-calender.WED": "三",
-	"uni-calender.THU": "四",
-	"uni-calender.FRI": "五",
-	"uni-calender.SAT": "六",
-	"uni-calender.confirm": "确认"
-}

+ 0 - 22
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hant.json

@@ -1,22 +0,0 @@
-{
-  "uni-datetime-picker.selectDate": "選擇日期",
-  "uni-datetime-picker.selectTime": "選擇時間",
-  "uni-datetime-picker.selectDateTime": "選擇日期時間",
-  "uni-datetime-picker.startDate": "開始日期",
-  "uni-datetime-picker.endDate": "結束日期",
-  "uni-datetime-picker.startTime": "開始时间",
-  "uni-datetime-picker.endTime": "結束时间",
-  "uni-datetime-picker.ok": "確定",
-  "uni-datetime-picker.clear": "清除",
-  "uni-datetime-picker.cancel": "取消",
-  "uni-datetime-picker.year": "年",
-  "uni-datetime-picker.month": "月",
-  "uni-calender.SUN": "日",
-  "uni-calender.MON": "一",
-  "uni-calender.TUE": "二",
-  "uni-calender.WED": "三",
-  "uni-calender.THU": "四",
-  "uni-calender.FRI": "五",
-  "uni-calender.SAT": "六",
-  "uni-calender.confirm": "確認"
-}

+ 0 - 934
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/time-picker.vue

@@ -1,934 +0,0 @@
-<template>
-	<view class="uni-datetime-picker">
-		<view @click="initTimePicker">
-			<slot>
-				<view class="uni-datetime-picker-timebox-pointer"
-					:class="{'uni-datetime-picker-disabled': disabled, 'uni-datetime-picker-timebox': border}">
-					<text class="uni-datetime-picker-text">{{time}}</text>
-					<view v-if="!time" class="uni-datetime-picker-time">
-						<text class="uni-datetime-picker-text">{{selectTimeText}}</text>
-					</view>
-				</view>
-			</slot>
-		</view>
-		<view v-if="visible" id="mask" class="uni-datetime-picker-mask" @click="tiggerTimePicker"></view>
-		<view v-if="visible" class="uni-datetime-picker-popup" :class="[dateShow && timeShow ? '' : 'fix-nvue-height']"
-			:style="fixNvueBug">
-			<view class="uni-title">
-				<text class="uni-datetime-picker-text">{{selectTimeText}}</text>
-			</view>
-			<view v-if="dateShow" class="uni-datetime-picker__container-box">
-				<picker-view class="uni-datetime-picker-view" :indicator-style="indicatorStyle" :value="ymd"
-					@change="bindDateChange">
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in years" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in months" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in days" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<!-- 兼容 nvue 不支持伪类 -->
-				<text class="uni-datetime-picker-sign sign-left">-</text>
-				<text class="uni-datetime-picker-sign sign-right">-</text>
-			</view>
-			<view v-if="timeShow" class="uni-datetime-picker__container-box">
-				<picker-view class="uni-datetime-picker-view" :class="[hideSecond ? 'time-hide-second' : '']"
-					:indicator-style="indicatorStyle" :value="hms" @change="bindTimeChange">
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in hours" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in minutes" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!hideSecond">
-						<view class="uni-datetime-picker-item" v-for="(item,index) in seconds" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<!-- 兼容 nvue 不支持伪类 -->
-				<text class="uni-datetime-picker-sign" :class="[hideSecond ? 'sign-center' : 'sign-left']">:</text>
-				<text v-if="!hideSecond" class="uni-datetime-picker-sign sign-right">:</text>
-			</view>
-			<view class="uni-datetime-picker-btn">
-				<view @click="clearTime">
-					<text class="uni-datetime-picker-btn-text">{{clearText}}</text>
-				</view>
-				<view class="uni-datetime-picker-btn-group">
-					<view class="uni-datetime-picker-cancel" @click="tiggerTimePicker">
-						<text class="uni-datetime-picker-btn-text">{{cancelText}}</text>
-					</view>
-					<view @click="setTime">
-						<text class="uni-datetime-picker-btn-text">{{okText}}</text>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const {	t	} = initVueI18n(i18nMessages)
-  import { fixIosDateFormat } from './util'
-
-	/**
-	 * DatetimePicker 时间选择器
-	 * @description 可以同时选择日期和时间的选择器
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=xxx
-	 * @property {String} type = [datetime | date | time] 显示模式
-	 * @property {Boolean} multiple = [true|false] 是否多选
-	 * @property {String|Number} value 默认值
-	 * @property {String|Number} start 起始日期或时间
-	 * @property {String|Number} end 起始日期或时间
-	 * @property {String} return-type = [timestamp | string]
-	 * @event {Function} change  选中发生变化触发
-	 */
-
-	export default {
-		name: 'UniDatetimePicker',
-		data() {
-			return {
-				indicatorStyle: `height: 50px;`,
-				visible: false,
-				fixNvueBug: {},
-				dateShow: true,
-				timeShow: true,
-				title: '日期和时间',
-				// 输入框当前时间
-				time: '',
-				// 当前的年月日时分秒
-				year: 1920,
-				month: 0,
-				day: 0,
-				hour: 0,
-				minute: 0,
-				second: 0,
-				// 起始时间
-				startYear: 1920,
-				startMonth: 1,
-				startDay: 1,
-				startHour: 0,
-				startMinute: 0,
-				startSecond: 0,
-				// 结束时间
-				endYear: 2120,
-				endMonth: 12,
-				endDay: 31,
-				endHour: 23,
-				endMinute: 59,
-				endSecond: 59,
-			}
-		},
-		props: {
-			type: {
-				type: String,
-				default: 'datetime'
-			},
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			modelValue: {
-				type: [String, Number],
-				default: ''
-			},
-			start: {
-				type: [Number, String],
-				default: ''
-			},
-			end: {
-				type: [Number, String],
-				default: ''
-			},
-			returnType: {
-				type: String,
-				default: 'string'
-			},
-			disabled: {
-				type: [Boolean, String],
-				default: false
-			},
-			border: {
-				type: [Boolean, String],
-				default: true
-			},
-			hideSecond: {
-				type: [Boolean, String],
-				default: false
-			}
-		},
-		watch: {
-			// #ifndef VUE3
-			value: {
-				handler(newVal) {
-          if (newVal) {
-            this.parseValue(fixIosDateFormat(newVal))
-						this.initTime(false)
-					} else {
-            this.time = ''
-						this.parseValue(Date.now())
-					}
-				},
-				immediate: true
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-        handler(newVal) {
-          if (newVal) {
-						this.parseValue(fixIosDateFormat(newVal))
-						this.initTime(false)
-					} else {
-						this.time = ''
-						this.parseValue(Date.now())
-					}
-				},
-				immediate: true
-			},
-			// #endif
-			type: {
-				handler(newValue) {
-					if (newValue === 'date') {
-						this.dateShow = true
-						this.timeShow = false
-						this.title = '日期'
-					} else if (newValue === 'time') {
-						this.dateShow = false
-						this.timeShow = true
-						this.title = '时间'
-					} else {
-						this.dateShow = true
-						this.timeShow = true
-						this.title = '日期和时间'
-					}
-				},
-				immediate: true
-			},
-			start: {
-				handler(newVal) {
-					this.parseDatetimeRange(fixIosDateFormat(newVal), 'start')
-				},
-				immediate: true
-			},
-			end: {
-				handler(newVal) {
-					this.parseDatetimeRange(fixIosDateFormat(newVal), 'end')
-				},
-				immediate: true
-			},
-
-			// 月、日、时、分、秒可选范围变化后,检查当前值是否在范围内,不在则当前值重置为可选范围第一项
-			months(newVal) {
-				this.checkValue('month', this.month, newVal)
-			},
-			days(newVal) {
-				this.checkValue('day', this.day, newVal)
-			},
-			hours(newVal) {
-				this.checkValue('hour', this.hour, newVal)
-			},
-			minutes(newVal) {
-				this.checkValue('minute', this.minute, newVal)
-			},
-			seconds(newVal) {
-				this.checkValue('second', this.second, newVal)
-			}
-		},
-		computed: {
-			// 当前年、月、日、时、分、秒选择范围
-			years() {
-				return this.getCurrentRange('year')
-			},
-
-			months() {
-				return this.getCurrentRange('month')
-			},
-
-			days() {
-				return this.getCurrentRange('day')
-			},
-
-			hours() {
-				return this.getCurrentRange('hour')
-			},
-
-			minutes() {
-				return this.getCurrentRange('minute')
-			},
-
-			seconds() {
-				return this.getCurrentRange('second')
-			},
-
-			// picker 当前值数组
-			ymd() {
-				return [this.year - this.minYear, this.month - this.minMonth, this.day - this.minDay]
-			},
-			hms() {
-				return [this.hour - this.minHour, this.minute - this.minMinute, this.second - this.minSecond]
-			},
-
-			// 当前 date 是 start
-			currentDateIsStart() {
-				return this.year === this.startYear && this.month === this.startMonth && this.day === this.startDay
-			},
-
-			// 当前 date 是 end
-			currentDateIsEnd() {
-				return this.year === this.endYear && this.month === this.endMonth && this.day === this.endDay
-			},
-
-			// 当前年、月、日、时、分、秒的最小值和最大值
-			minYear() {
-				return this.startYear
-			},
-			maxYear() {
-				return this.endYear
-			},
-			minMonth() {
-				if (this.year === this.startYear) {
-					return this.startMonth
-				} else {
-					return 1
-				}
-			},
-			maxMonth() {
-				if (this.year === this.endYear) {
-					return this.endMonth
-				} else {
-					return 12
-				}
-			},
-			minDay() {
-				if (this.year === this.startYear && this.month === this.startMonth) {
-					return this.startDay
-				} else {
-					return 1
-				}
-			},
-			maxDay() {
-				if (this.year === this.endYear && this.month === this.endMonth) {
-					return this.endDay
-				} else {
-					return this.daysInMonth(this.year, this.month)
-				}
-			},
-			minHour() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsStart) {
-						return this.startHour
-					} else {
-						return 0
-					}
-				}
-				if (this.type === 'time') {
-					return this.startHour
-				}
-			},
-			maxHour() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsEnd) {
-						return this.endHour
-					} else {
-						return 23
-					}
-				}
-				if (this.type === 'time') {
-					return this.endHour
-				}
-			},
-			minMinute() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsStart && this.hour === this.startHour) {
-						return this.startMinute
-					} else {
-						return 0
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.startHour) {
-						return this.startMinute
-					} else {
-						return 0
-					}
-				}
-			},
-			maxMinute() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsEnd && this.hour === this.endHour) {
-						return this.endMinute
-					} else {
-						return 59
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.endHour) {
-						return this.endMinute
-					} else {
-						return 59
-					}
-				}
-			},
-			minSecond() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsStart && this.hour === this.startHour && this.minute === this.startMinute) {
-						return this.startSecond
-					} else {
-						return 0
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.startHour && this.minute === this.startMinute) {
-						return this.startSecond
-					} else {
-						return 0
-					}
-				}
-			},
-			maxSecond() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsEnd && this.hour === this.endHour && this.minute === this.endMinute) {
-						return this.endSecond
-					} else {
-						return 59
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.endHour && this.minute === this.endMinute) {
-						return this.endSecond
-					} else {
-						return 59
-					}
-				}
-			},
-
-			/**
-			 * for i18n
-			 */
-			selectTimeText() {
-				return t("uni-datetime-picker.selectTime")
-			},
-			okText() {
-				return t("uni-datetime-picker.ok")
-			},
-			clearText() {
-				return t("uni-datetime-picker.clear")
-			},
-			cancelText() {
-				return t("uni-datetime-picker.cancel")
-			}
-		},
-
-		mounted() {
-			// #ifdef APP-NVUE
-			const res = uni.getSystemInfoSync();
-			this.fixNvueBug = {
-				top: res.windowHeight / 2,
-				left: res.windowWidth / 2
-			}
-			// #endif
-		},
-
-		methods: {
-			/**
-			 * @param {Object} item
-			 * 小于 10 在前面加个 0
-			 */
-
-			lessThanTen(item) {
-				return item < 10 ? '0' + item : item
-			},
-
-			/**
-			 * 解析时分秒字符串,例如:00:00:00
-			 * @param {String} timeString
-			 */
-			parseTimeType(timeString) {
-				if (timeString) {
-					let timeArr = timeString.split(':')
-					this.hour = Number(timeArr[0])
-					this.minute = Number(timeArr[1])
-					this.second = Number(timeArr[2])
-				}
-			},
-
-			/**
-			 * 解析选择器初始值,类型可以是字符串、时间戳,例如:2000-10-02、'08:30:00'、 1610695109000
-			 * @param {String | Number} datetime
-			 */
-			initPickerValue(datetime) {
-				let defaultValue = null
-				if (datetime) {
-					defaultValue = this.compareValueWithStartAndEnd(datetime, this.start, this.end)
-				} else {
-					defaultValue = Date.now()
-					defaultValue = this.compareValueWithStartAndEnd(defaultValue, this.start, this.end)
-				}
-				this.parseValue(defaultValue)
-			},
-
-			/**
-			 * 初始值规则:
-			 * - 用户设置初始值 value
-			 * 	- 设置了起始时间 start、终止时间 end,并 start < value < end,初始值为 value, 否则初始值为 start
-			 * 	- 只设置了起始时间 start,并 start < value,初始值为 value,否则初始值为 start
-			 * 	- 只设置了终止时间 end,并 value < end,初始值为 value,否则初始值为 end
-			 * 	- 无起始终止时间,则初始值为 value
-			 * - 无初始值 value,则初始值为当前本地时间 Date.now()
-			 * @param {Object} value
-			 * @param {Object} dateBase
-			 */
-			compareValueWithStartAndEnd(value, start, end) {
-				let winner = null
-				value = this.superTimeStamp(value)
-				start = this.superTimeStamp(start)
-				end = this.superTimeStamp(end)
-
-				if (start && end) {
-					if (value < start) {
-						winner = new Date(start)
-					} else if (value > end) {
-						winner = new Date(end)
-					} else {
-						winner = new Date(value)
-					}
-				} else if (start && !end) {
-					winner = start <= value ? new Date(value) : new Date(start)
-				} else if (!start && end) {
-					winner = value <= end ? new Date(value) : new Date(end)
-				} else {
-					winner = new Date(value)
-				}
-
-				return winner
-			},
-
-			/**
-			 * 转换为可比较的时间戳,接受日期、时分秒、时间戳
-			 * @param {Object} value
-			 */
-			superTimeStamp(value) {
-				let dateBase = ''
-				if (this.type === 'time' && value && typeof value === 'string') {
-					const now = new Date()
-					const year = now.getFullYear()
-					const month = now.getMonth() + 1
-					const day = now.getDate()
-					dateBase = year + '/' + month + '/' + day + ' '
-				}
-				if (Number(value)) {
-					value = parseInt(value)
-					dateBase = 0
-				}
-				return this.createTimeStamp(dateBase + value)
-			},
-
-			/**
-			 * 解析默认值 value,字符串、时间戳
-			 * @param {Object} defaultTime
-			 */
-			parseValue(value) {
-				if (!value) {
-					return
-				}
-				if (this.type === 'time' && typeof value === "string") {
-					this.parseTimeType(value)
-				} else {
-					let defaultDate = null
-					defaultDate = new Date(value)
-					if (this.type !== 'time') {
-						this.year = defaultDate.getFullYear()
-						this.month = defaultDate.getMonth() + 1
-						this.day = defaultDate.getDate()
-					}
-					if (this.type !== 'date') {
-						this.hour = defaultDate.getHours()
-						this.minute = defaultDate.getMinutes()
-						this.second = defaultDate.getSeconds()
-					}
-				}
-				if (this.hideSecond) {
-					this.second = 0
-				}
-			},
-
-			/**
-			 * 解析可选择时间范围 start、end,年月日字符串、时间戳
-			 * @param {Object} defaultTime
-			 */
-			parseDatetimeRange(point, pointType) {
-				// 时间为空,则重置为初始值
-				if (!point) {
-					if (pointType === 'start') {
-						this.startYear = 1920
-						this.startMonth = 1
-						this.startDay = 1
-						this.startHour = 0
-						this.startMinute = 0
-						this.startSecond = 0
-					}
-					if (pointType === 'end') {
-						this.endYear = 2120
-						this.endMonth = 12
-						this.endDay = 31
-						this.endHour = 23
-						this.endMinute = 59
-						this.endSecond = 59
-					}
-					return
-				}
-				if (this.type === 'time') {
-					const pointArr = point.split(':')
-					this[pointType + 'Hour'] = Number(pointArr[0])
-					this[pointType + 'Minute'] = Number(pointArr[1])
-					this[pointType + 'Second'] = Number(pointArr[2])
-				} else {
-					if (!point) {
-						pointType === 'start' ? this.startYear = this.year - 60 : this.endYear = this.year + 60
-						return
-					}
-					if (Number(point)) {
-						point = parseInt(point)
-					}
-					// datetime 的 end 没有时分秒, 则不限制
-					const hasTime = /[0-9]:[0-9]/
-					if (this.type === 'datetime' && pointType === 'end' && typeof point === 'string' && !hasTime.test(
-							point)) {
-						point = point + ' 23:59:59'
-					}
-					const pointDate = new Date(point)
-					this[pointType + 'Year'] = pointDate.getFullYear()
-					this[pointType + 'Month'] = pointDate.getMonth() + 1
-					this[pointType + 'Day'] = pointDate.getDate()
-					if (this.type === 'datetime') {
-						this[pointType + 'Hour'] = pointDate.getHours()
-						this[pointType + 'Minute'] = pointDate.getMinutes()
-						this[pointType + 'Second'] = pointDate.getSeconds()
-					}
-				}
-			},
-
-			// 获取 年、月、日、时、分、秒 当前可选范围
-			getCurrentRange(value) {
-				const range = []
-				for (let i = this['min' + this.capitalize(value)]; i <= this['max' + this.capitalize(value)]; i++) {
-					range.push(i)
-				}
-				return range
-			},
-
-			// 字符串首字母大写
-			capitalize(str) {
-				return str.charAt(0).toUpperCase() + str.slice(1)
-			},
-
-			// 检查当前值是否在范围内,不在则当前值重置为可选范围第一项
-			checkValue(name, value, values) {
-				if (values.indexOf(value) === -1) {
-					this[name] = values[0]
-				}
-			},
-
-			// 每个月的实际天数
-			daysInMonth(year, month) { // Use 1 for January, 2 for February, etc.
-				return new Date(year, month, 0).getDate();
-			},
-
-			//兼容 iOS、safari 日期格式
-			fixIosDateFormat(value) {
-				if (typeof value === 'string') {
-					value = value.replace(/-/g, '/')
-				}
-				return value
-			},
-
-			/**
-			 * 生成时间戳
-			 * @param {Object} time
-			 */
-			createTimeStamp(time) {
-				if (!time) return
-				if (typeof time === "number") {
-					return time
-				} else {
-					time = time.replace(/-/g, '/')
-					if (this.type === 'date') {
-						time = time + ' ' + '00:00:00'
-					}
-					return Date.parse(time)
-				}
-			},
-
-			/**
-			 * 生成日期或时间的字符串
-			 */
-			createDomSting() {
-				const yymmdd = this.year +
-					'-' +
-					this.lessThanTen(this.month) +
-					'-' +
-					this.lessThanTen(this.day)
-
-				let hhmmss = this.lessThanTen(this.hour) +
-					':' +
-					this.lessThanTen(this.minute)
-
-				if (!this.hideSecond) {
-					hhmmss = hhmmss + ':' + this.lessThanTen(this.second)
-				}
-
-				if (this.type === 'date') {
-					return yymmdd
-				} else if (this.type === 'time') {
-					return hhmmss
-				} else {
-					return yymmdd + ' ' + hhmmss
-				}
-			},
-
-			/**
-			 * 初始化返回值,并抛出 change 事件
-			 */
-			initTime(emit = true) {
-				this.time = this.createDomSting()
-				if (!emit) return
-				if (this.returnType === 'timestamp' && this.type !== 'time') {
-					this.$emit('change', this.createTimeStamp(this.time))
-					this.$emit('input', this.createTimeStamp(this.time))
-					this.$emit('update:modelValue', this.createTimeStamp(this.time))
-				} else {
-					this.$emit('change', this.time)
-					this.$emit('input', this.time)
-					this.$emit('update:modelValue', this.time)
-				}
-			},
-
-			/**
-			 * 用户选择日期或时间更新 data
-			 * @param {Object} e
-			 */
-			bindDateChange(e) {
-				const val = e.detail.value
-				this.year = this.years[val[0]]
-				this.month = this.months[val[1]]
-				this.day = this.days[val[2]]
-			},
-			bindTimeChange(e) {
-				const val = e.detail.value
-				this.hour = this.hours[val[0]]
-				this.minute = this.minutes[val[1]]
-				this.second = this.seconds[val[2]]
-			},
-
-			/**
-			 * 初始化弹出层
-			 */
-			initTimePicker() {
-				if (this.disabled) return
-				const value = fixIosDateFormat(this.time)
-				this.initPickerValue(value)
-				this.visible = !this.visible
-			},
-
-			/**
-			 * 触发或关闭弹框
-			 */
-			tiggerTimePicker(e) {
-				this.visible = !this.visible
-			},
-
-			/**
-			 * 用户点击“清空”按钮,清空当前值
-			 */
-			clearTime() {
-				this.time = ''
-				this.$emit('change', this.time)
-				this.$emit('input', this.time)
-				this.$emit('update:modelValue', this.time)
-				this.tiggerTimePicker()
-			},
-
-			/**
-			 * 用户点击“确定”按钮
-			 */
-			setTime() {
-				this.initTime()
-				this.tiggerTimePicker()
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-primary: #007aff !default;
-
-	.uni-datetime-picker {
-		/* #ifndef APP-NVUE */
-		/* width: 100%; */
-		/* #endif */
-	}
-
-	.uni-datetime-picker-view {
-		height: 130px;
-		width: 270px;
-		/* #ifndef APP-NVUE */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-item {
-		height: 50px;
-		line-height: 50px;
-		text-align: center;
-		font-size: 14px;
-	}
-
-	.uni-datetime-picker-btn {
-		margin-top: 60px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		cursor: pointer;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-	}
-
-	.uni-datetime-picker-btn-text {
-		font-size: 14px;
-		color: $uni-primary;
-	}
-
-	.uni-datetime-picker-btn-group {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-datetime-picker-cancel {
-		margin-right: 30px;
-	}
-
-	.uni-datetime-picker-mask {
-		position: fixed;
-		bottom: 0px;
-		top: 0px;
-		left: 0px;
-		right: 0px;
-		background-color: rgba(0, 0, 0, 0.4);
-		transition-duration: 0.3s;
-		z-index: 998;
-	}
-
-	.uni-datetime-picker-popup {
-		border-radius: 8px;
-		padding: 30px;
-		width: 270px;
-		/* #ifdef APP-NVUE */
-		height: 500px;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		width: 330px;
-		/* #endif */
-		background-color: #fff;
-		position: fixed;
-		top: 50%;
-		left: 50%;
-		transform: translate(-50%, -50%);
-		transition-duration: 0.3s;
-		z-index: 999;
-	}
-
-	.fix-nvue-height {
-		/* #ifdef APP-NVUE */
-		height: 330px;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-time {
-		color: grey;
-	}
-
-	.uni-datetime-picker-column {
-		height: 50px;
-	}
-
-	.uni-datetime-picker-timebox {
-
-		border: 1px solid #E5E5E5;
-		border-radius: 5px;
-		padding: 7px 10px;
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-timebox-pointer {
-		/* #ifndef APP-NVUE */
-		cursor: pointer;
-		/* #endif */
-	}
-
-
-	.uni-datetime-picker-disabled {
-		opacity: 0.4;
-		/* #ifdef H5 */
-		cursor: not-allowed !important;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-text {
-		font-size: 14px;
-		line-height: 50px
-	}
-
-	.uni-datetime-picker-sign {
-		position: absolute;
-		top: 53px;
-		/* 减掉 10px 的元素高度,兼容nvue */
-		color: #999;
-		/* #ifdef APP-NVUE */
-		font-size: 16px;
-		/* #endif */
-	}
-
-	.sign-left {
-		left: 86px;
-	}
-
-	.sign-right {
-		right: 86px;
-	}
-
-	.sign-center {
-		left: 135px;
-	}
-
-	.uni-datetime-picker__container-box {
-		position: relative;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		margin-top: 40px;
-	}
-
-	.time-hide-second {
-		width: 180px;
-	}
-</style>

+ 0 - 1032
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/uni-datetime-picker.vue

@@ -1,1032 +0,0 @@
-<template>
-	<view class="uni-date">
-		<view class="uni-date-editor" @click="show">
-			<slot>
-				<view
-          class="uni-date-editor--x"
-          :class="{'uni-date-editor--x__disabled': disabled,'uni-date-x--border': border}"
-        >
-					<view v-if="!isRange" class="uni-date-x uni-date-single">
-						<uni-icons class="icon-calendar" type="calendar" color="#c0c4cc" size="22"></uni-icons>
-						<view class="uni-date__x-input">{{ displayValue || singlePlaceholderText }}</view>
-					</view>
-
-					<view v-else class="uni-date-x uni-date-range">
-            <uni-icons class="icon-calendar" type="calendar" color="#c0c4cc" size="22"></uni-icons>
-            <view class="uni-date__x-input text-center">{{ displayRangeValue.startDate || startPlaceholderText }}</view>
-
-            <view class="range-separator">{{rangeSeparator}}</view>
-
-            <view class="uni-date__x-input text-center">{{ displayRangeValue.endDate || endPlaceholderText }}</view>
-					</view>
-
-					<view v-if="showClearIcon" class="uni-date__icon-clear" @click.stop="clear">
-						<uni-icons type="clear" color="#c0c4cc" size="22"></uni-icons>
-					</view>
-				</view>
-			</slot>
-		</view>
-
-		<view v-show="pickerVisible" class="uni-date-mask--pc" @click="close"></view>
-
-		<view v-if="!isPhone" v-show="pickerVisible" ref="datePicker" class="uni-date-picker__container">
-			<view v-if="!isRange" class="uni-date-single--x" :style="pickerPositionStyle">
-				<view class="uni-popper__arrow"></view>
-
-				<view v-if="hasTime" class="uni-date-changed popup-x-header">
-					<input class="uni-date__input text-center" type="text" v-model="inputDate"
-						:placeholder="selectDateText" />
-
-					<time-picker type="time" v-model="pickerTime" :border="false" :disabled="!inputDate"
-						:start="timepickerStartTime" :end="timepickerEndTime" :hideSecond="hideSecond" style="width: 100%;">
-						<input class="uni-date__input text-center" type="text" v-model="pickerTime" :placeholder="selectTimeText"
-							:disabled="!inputDate" />
-					</time-picker>
-				</view>
-
-				<Calendar ref="pcSingle" :showMonth="false" :start-date="calendarRange.startDate"
-					:end-date="calendarRange.endDate" :date="calendarDate" @change="singleChange"
-          :default-value="defaultValue"
-					style="padding: 0 8px;" />
-
-				<view v-if="hasTime" class="popup-x-footer">
-					<text class="confirm-text" @click="confirmSingleChange">{{okText}}</text>
-				</view>
-			</view>
-
-			<view v-else class="uni-date-range--x" :style="pickerPositionStyle">
-				<view class="uni-popper__arrow"></view>
-				<view v-if="hasTime" class="popup-x-header uni-date-changed">
-					<view class="popup-x-header--datetime">
-            <input class="uni-date__input uni-date-range__input" type="text" v-model="tempRange.startDate"
-            :placeholder="startDateText" />
-
-						<time-picker type="time" v-model="tempRange.startTime" :start="timepickerStartTime" :border="false"
-            :disabled="!tempRange.startDate" :hideSecond="hideSecond">
-            <input class="uni-date__input uni-date-range__input" type="text"
-            v-model="tempRange.startTime" :placeholder="startTimeText"
-            :disabled="!tempRange.startDate" />
-          </time-picker>
-        </view>
-
-        <uni-icons type="arrowthinright" color="#999" style="line-height: 40px;"></uni-icons>
-
-					<view class="popup-x-header--datetime">
-						<input class="uni-date__input uni-date-range__input" type="text" v-model="tempRange.endDate"
-							:placeholder="endDateText" />
-
-						<time-picker type="time" v-model="tempRange.endTime" :end="timepickerEndTime" :border="false"
-							:disabled="!tempRange.endDate" :hideSecond="hideSecond">
-							<input class="uni-date__input uni-date-range__input" type="text" v-model="tempRange.endTime"
-								:placeholder="endTimeText" :disabled="!tempRange.endDate" />
-						</time-picker>
-					</view>
-				</view>
-
-				<view class="popup-x-body">
-					<Calendar ref="left" :showMonth="false" :start-date="calendarRange.startDate"
-            :end-date="calendarRange.endDate" :range="true" :pleStatus="endMultipleStatus"
-            @change="leftChange" @firstEnterCale="updateRightCale" style="padding: 0 8px;" />
-					<Calendar ref="right" :showMonth="false" :start-date="calendarRange.startDate"
-						:end-date="calendarRange.endDate" :range="true" @change="rightChange"
-						:pleStatus="startMultipleStatus" @firstEnterCale="updateLeftCale"
-						style="padding: 0 8px;border-left: 1px solid #F1F1F1;" />
-				</view>
-
-				<view v-if="hasTime" class="popup-x-footer">
-					<text @click="clear">{{clearText}}</text>
-					<text class="confirm-text" @click="confirmRangeChange">{{okText}}</text>
-				</view>
-			</view>
-		</view>
-
-		<Calendar v-if="isPhone" ref="mobile" :clearDate="false" :date="calendarDate" :defTime="mobileCalendarTime"
-			:start-date="calendarRange.startDate" :end-date="calendarRange.endDate" :selectableTimes="mobSelectableTime"
-      :startPlaceholder="startPlaceholder" :endPlaceholder="endPlaceholder"
-      :default-value="defaultValue"
-			:pleStatus="endMultipleStatus" :showMonth="false" :range="isRange" :hasTime="hasTime" :insert="false"
-			:hideSecond="hideSecond" @confirm="mobileChange" @maskClose="close" />
-	</view>
-</template>
-<script>
-	/**
-	 * DatetimePicker 时间选择器
-	 * @description 同时支持 PC 和移动端使用日历选择日期和日期范围
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3962
-	 * @property {String} type 选择器类型
-	 * @property {String|Number|Array|Date} value 绑定值
-	 * @property {String} placeholder 单选择时的占位内容
-	 * @property {String} start 起始时间
-	 * @property {String} end 终止时间
-	 * @property {String} start-placeholder 范围选择时开始日期的占位内容
-	 * @property {String} end-placeholder 范围选择时结束日期的占位内容
-	 * @property {String} range-separator 选择范围时的分隔符
-	 * @property {Boolean} border = [true|false] 是否有边框
-	 * @property {Boolean} disabled = [true|false] 是否禁用
-	 * @property {Boolean} clearIcon = [true|false] 是否显示清除按钮(仅PC端适用)
-	 * @property {[String} defaultValue 选择器打开时默认显示的时间
-	 * @event {Function} change 确定日期时触发的事件
-	 * @event {Function} maskClick 点击遮罩层触发的事件
-	 * @event {Function} show 打开弹出层
-	 * @event {Function} close 关闭弹出层
-	 * @event {Function} clear 清除上次选中的状态和值
-	 **/
-	import Calendar from './calendar.vue'
-	import TimePicker from './time-picker.vue'
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-  import { getDateTime, getDate, getTime, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat } from './util'
-
-	export default {
-		name: 'UniDatetimePicker',
-		options: {
-			virtualHost: true
-		},
-		components: {
-			Calendar,
-			TimePicker
-		},
-		data() {
-			return {
-				isRange: false,
-				hasTime: false,
-				displayValue: '',
-				inputDate: '',
-				calendarDate: '',
-				pickerTime: '',
-				calendarRange: {
-					startDate: '',
-					startTime: '',
-					endDate: '',
-					endTime: ''
-				},
-				displayRangeValue: {
-					startDate: '',
-					endDate: '',
-				},
-				tempRange: {
-					startDate: '',
-					startTime: '',
-					endDate: '',
-					endTime: ''
-				},
-				// 左右日历同步数据
-				startMultipleStatus: {
-					before: '',
-					after: '',
-					data: [],
-					fulldate: ''
-				},
-				endMultipleStatus: {
-					before: '',
-					after: '',
-					data: [],
-					fulldate: ''
-				},
-				pickerVisible: false,
-				pickerPositionStyle: null,
-				isEmitValue: false,
-				isPhone: false,
-				isFirstShow: true,
-        i18nT: () => {}
-			}
-		},
-		props: {
-			type: {
-				type: String,
-				default: 'datetime'
-			},
-			value: {
-				type: [String, Number, Array, Date],
-				default: ''
-			},
-			modelValue: {
-				type: [String, Number, Array, Date],
-				default: ''
-			},
-			start: {
-				type: [Number, String],
-				default: ''
-			},
-			end: {
-				type: [Number, String],
-				default: ''
-			},
-			returnType: {
-				type: String,
-				default: 'string'
-			},
-			placeholder: {
-				type: String,
-				default: ''
-			},
-			startPlaceholder: {
-        type: String,
-				default: ''
-			},
-			endPlaceholder: {
-				type: String,
-				default: ''
-			},
-			rangeSeparator: {
-				type: String,
-				default: '-'
-			},
-			border: {
-				type: [Boolean],
-				default: true
-			},
-			disabled: {
-				type: [Boolean],
-				default: false
-			},
-			clearIcon: {
-				type: [Boolean],
-				default: true
-			},
-			hideSecond: {
-				type: [Boolean],
-				default: false
-			},
-      defaultValue: {
-        type: [String, Object, Array],
-        default: ''
-      }
-		},
-		watch: {
-			type: {
-				immediate: true,
-				handler(newVal) {
-          this.hasTime = newVal.indexOf('time') !== -1
-					this.isRange = newVal.indexOf('range') !== -1
-				}
-			},
-			// #ifndef VUE3
-			value: {
-				immediate: true,
-				handler(newVal) {
-					if (this.isEmitValue) {
-						this.isEmitValue = false
-						return
-					}
-					this.initPicker(newVal)
-				}
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				immediate: true,
-				handler(newVal) {
-					if (this.isEmitValue) {
-						this.isEmitValue = false
-						return
-					}
-					this.initPicker(newVal)
-				}
-			},
-			// #endif
-			start: {
-				immediate: true,
-				handler(newVal) {
-					if (!newVal) return
-					this.calendarRange.startDate = getDate(newVal)
-					if (this.hasTime) {
-						this.calendarRange.startTime = getTime(newVal)
-					}
-				}
-			},
-			end: {
-				immediate: true,
-				handler(newVal) {
-					if (!newVal) return
-					this.calendarRange.endDate = getDate(newVal)
-					if (this.hasTime) {
-						this.calendarRange.endTime = getTime(newVal, this.hideSecond)
-					}
-				}
-			},
-		},
-		computed: {
-			timepickerStartTime() {
-				const activeDate = this.isRange ? this.tempRange.startDate : this.inputDate
-				return activeDate === this.calendarRange.startDate ? this.calendarRange.startTime : ''
-			},
-			timepickerEndTime() {
-				const activeDate = this.isRange ? this.tempRange.endDate : this.inputDate
-				return activeDate === this.calendarRange.endDate ? this.calendarRange.endTime : ''
-			},
-			mobileCalendarTime() {
-				const timeRange = {
-					start: this.tempRange.startTime,
-					end: this.tempRange.endTime
-				}
-				return this.isRange ? timeRange : this.pickerTime
-			},
-			mobSelectableTime() {
-				return {
-					start: this.calendarRange.startTime,
-					end: this.calendarRange.endTime
-				}
-			},
-			datePopupWidth() {
-				// todo
-				return this.isRange ? 653 : 301
-			},
-
-			/**
-			 * for i18n
-			 */
-			singlePlaceholderText() {
-				return this.placeholder || (this.type === 'date' ? this.selectDateText : this.selectDateTimeText)
-			},
-			startPlaceholderText() {
-				return this.startPlaceholder || this.startDateText
-			},
-			endPlaceholderText() {
-				return this.endPlaceholder || this.endDateText
-			},
-			selectDateText() {
-				return this.i18nT("uni-datetime-picker.selectDate")
-			},
-      selectDateTimeText() {
-        return this.i18nT("uni-datetime-picker.selectDateTime")
-      },
-			selectTimeText() {
-				return this.i18nT("uni-datetime-picker.selectTime")
-			},
-			startDateText() {
-				return this.startPlaceholder || this.i18nT("uni-datetime-picker.startDate")
-			},
-			startTimeText() {
-				return this.i18nT("uni-datetime-picker.startTime")
-			},
-			endDateText() {
-				return this.endPlaceholder || this.i18nT("uni-datetime-picker.endDate")
-			},
-			endTimeText() {
-				return this.i18nT("uni-datetime-picker.endTime")
-			},
-			okText() {
-				return this.i18nT("uni-datetime-picker.ok")
-			},
-			clearText() {
-				return this.i18nT("uni-datetime-picker.clear")
-			},
-			showClearIcon() {
-				return this.clearIcon && !this.disabled && (this.displayValue || (this.displayRangeValue.startDate && this.displayRangeValue.endDate))
-			}
-		},
-		created() {
-			this.initI18nT()
-      this.platform()
-		},
-		methods: {
-      initI18nT() {
-        const vueI18n = initVueI18n(i18nMessages)
-        this.i18nT = vueI18n.t
-      },
-			initPicker(newVal) {
-				if ((!newVal && !this.defaultValue) || Array.isArray(newVal) && !newVal.length) {
-					this.$nextTick(() => {
-						this.clear(false)
-					})
-					return
-				}
-
-				if (!Array.isArray(newVal) && !this.isRange) {
-          if(newVal){
-            this.displayValue = this.inputDate = this.calendarDate = getDate(newVal)
-            if (this.hasTime) {
-              this.pickerTime = getTime(newVal, this.hideSecond)
-              this.displayValue = `${this.displayValue} ${this.pickerTime}`
-            }
-          }else if(this.defaultValue){
-            this.inputDate = this.calendarDate = getDate(this.defaultValue)
-            if(this.hasTime){
-              this.pickerTime = getTime(this.defaultValue, this.hideSecond)
-            }
-          }
-				} else {
-					const [before, after] = newVal
-					if (!before && !after) return
-          const beforeDate = getDate(before)
-          const beforeTime = getTime(before, this.hideSecond)
-
-          const afterDate = getDate(after)
-          const afterTime = getTime(after, this.hideSecond)
-					const startDate = beforeDate
-					const endDate = afterDate
-					this.displayRangeValue.startDate = this.tempRange.startDate = startDate
-					this.displayRangeValue.endDate = this.tempRange.endDate = endDate
-
-					if (this.hasTime) {
-						this.displayRangeValue.startDate = `${beforeDate} ${beforeTime}`
-						this.displayRangeValue.endDate = `${afterDate} ${afterTime}`
-						this.tempRange.startTime = beforeTime
-						this.tempRange.endTime = afterTime
-					}
-					const defaultRange = {
-						before: beforeDate,
-						after: afterDate
-					}
-					this.startMultipleStatus = Object.assign({}, this.startMultipleStatus, defaultRange, {
-						which: 'right'
-					})
-					this.endMultipleStatus = Object.assign({}, this.endMultipleStatus, defaultRange, {
-						which: 'left'
-					})
-				}
-			},
-			updateLeftCale(e) {
-				const left = this.$refs.left
-				// 设置范围选
-				left.cale.setHoverMultiple(e.after)
-				left.setDate(this.$refs.left.nowDate.fullDate)
-			},
-			updateRightCale(e) {
-				const right = this.$refs.right
-				// 设置范围选
-				right.cale.setHoverMultiple(e.after)
-				right.setDate(this.$refs.right.nowDate.fullDate)
-			},
-			platform() {
-        if(typeof navigator !== "undefined"){
-          this.isPhone = navigator.userAgent.toLowerCase().indexOf('mobile') !== -1
-          return
-        }
-				const { windowWidth } = uni.getSystemInfoSync()
-				this.isPhone = windowWidth <= 500
-				this.windowWidth = windowWidth
-			},
-			show() {
-				if (this.disabled) {
-					return
-				}
-				this.platform()
-				if (this.isPhone) {
-					setTimeout(() => {
-            this.$refs.mobile.open()
-          }, 0);
-					return
-				}
-				this.pickerPositionStyle = {
-					top: '10px'
-				}
-				const dateEditor = uni.createSelectorQuery().in(this).select(".uni-date-editor")
-				dateEditor.boundingClientRect(rect => {
-					if (this.windowWidth - rect.left < this.datePopupWidth) {
-						this.pickerPositionStyle.right = 0
-					}
-				}).exec()
-				setTimeout(() => {
-					this.pickerVisible = !this.pickerVisible
-					if (!this.isPhone && this.isRange && this.isFirstShow) {
-						this.isFirstShow = false
-						const {
-							startDate,
-							endDate
-						} = this.calendarRange
-						if (startDate && endDate) {
-							if (this.diffDate(startDate, endDate) < 30) {
-								this.$refs.right.changeMonth('pre')
-							}
-						} else {
-							this.$refs.right.changeMonth('next')
-							this.$refs.right.cale.lastHover = false
-						}
-					}
-
-				}, 50)
-			},
-			close() {
-				setTimeout(() => {
-					this.pickerVisible = false
-					this.$emit('maskClick', this.value)
-					this.$refs.mobile && this.$refs.mobile.close()
-				}, 20)
-			},
-			setEmit(value) {
-				if (this.returnType === "timestamp" || this.returnType === "date") {
-					if (!Array.isArray(value)) {
-						if (!this.hasTime) {
-							value = value + ' ' + '00:00:00'
-						}
-						value = this.createTimestamp(value)
-						if (this.returnType === "date") {
-							value = new Date(value)
-						}
-					} else {
-						if (!this.hasTime) {
-							value[0] = value[0] + ' ' + '00:00:00'
-							value[1] = value[1] + ' ' + '00:00:00'
-						}
-						value[0] = this.createTimestamp(value[0])
-						value[1] = this.createTimestamp(value[1])
-						if (this.returnType === "date") {
-							value[0] = new Date(value[0])
-							value[1] = new Date(value[1])
-						}
-					}
-				}
-
-				this.$emit('update:modelValue', value)
-				this.$emit('input', value)
-				this.$emit('change', value)
-				this.isEmitValue = true
-			},
-			createTimestamp(date) {
-				date = fixIosDateFormat(date)
-				return Date.parse(new Date(date))
-			},
-			singleChange(e) {
-				this.calendarDate = this.inputDate = e.fulldate
-				if (this.hasTime) return
-				this.confirmSingleChange()
-			},
-			confirmSingleChange() {
-        if(!checkDate(this.inputDate)){
-					const now = new Date()
-          this.calendarDate = this.inputDate = getDate(now)
-					this.pickerTime = getTime(now, this.hideSecond)
-        }
-
-        let startLaterInputDate = false
-        let startDate, startTime
-        if(this.start) {
-          let startString = this.start
-          if(typeof this.start === 'number'){
-            startString = getDateTime(this.start, this.hideSecond)
-          }
-          [startDate, startTime] = startString.split(' ')
-          if(this.start && !dateCompare(startDate, this.inputDate)) {
-            startLaterInputDate = true
-            this.inputDate = startDate
-          }
-        }
-
-        let endEarlierInputDate = false
-        let endDate, endTime
-        if(this.end) {
-          let endString = this.end
-          if(typeof this.end === 'number'){
-            endString = getDateTime(this.end, this.hideSecond)
-          }
-          [endDate, endTime] = endString.split(' ')
-          if(this.end && !dateCompare(this.inputDate, endDate)) {
-            endEarlierInputDate = true
-            this.inputDate = endDate
-          }
-        }
-				if (this.hasTime) {
-          if(startLaterInputDate){
-            this.pickerTime = startTime || getDefaultSecond(this.hideSecond)
-          }
-          if(endEarlierInputDate){
-            this.pickerTime = endTime || getDefaultSecond(this.hideSecond)
-          }
-          if(!this.pickerTime){
-            this.pickerTime = getTime(Date.now(), this.hideSecond)
-          }
-					this.displayValue = `${this.inputDate} ${this.pickerTime}`
-				} else {
-          this.displayValue = this.inputDate
-				}
-				this.setEmit(this.displayValue)
-				this.pickerVisible = false
-			},
-			leftChange(e) {
-				const {
-					before,
-					after
-				} = e.range
-				this.rangeChange(before, after)
-				const obj = {
-					before: e.range.before,
-					after: e.range.after,
-					data: e.range.data,
-					fulldate: e.fulldate
-				}
-				this.startMultipleStatus = Object.assign({}, this.startMultipleStatus, obj)
-			},
-			rightChange(e) {
-				const {
-					before,
-					after
-				} = e.range
-				this.rangeChange(before, after)
-				const obj = {
-					before: e.range.before,
-					after: e.range.after,
-					data: e.range.data,
-					fulldate: e.fulldate
-				}
-				this.endMultipleStatus = Object.assign({}, this.endMultipleStatus, obj)
-			},
-			mobileChange(e) {
-				if (this.isRange) {
-					const {before, after} = e.range
-
-          if(!before || !after){
-            return
-          }
-
-					this.handleStartAndEnd(before, after, true)
-					if (this.hasTime) {
-						const {
-							startTime,
-							endTime
-						} = e.timeRange
-						this.tempRange.startTime = startTime
-						this.tempRange.endTime = endTime
-					}
-					this.confirmRangeChange()
-				} else {
-					if (this.hasTime) {
-						this.displayValue = e.fulldate + ' ' + e.time
-					} else {
-						this.displayValue = e.fulldate
-					}
-					this.setEmit(this.displayValue)
-				}
-				this.$refs.mobile.close()
-			},
-			rangeChange(before, after) {
-				if (!(before && after)) return
-				this.handleStartAndEnd(before, after, true)
-				if (this.hasTime) return
-				this.confirmRangeChange()
-			},
-			confirmRangeChange() {
-				if (!this.tempRange.startDate || !this.tempRange.endDate) {
-					this.pickerVisible = false
-					return
-				}
-        if(!checkDate(this.tempRange.startDate)){
-          this.tempRange.startDate = getDate(Date.now())
-        }
-        if(!checkDate(this.tempRange.endDate)){
-          this.tempRange.endDate = getDate(Date.now())
-        }
-
-				let start, end
-
-        let startDateLaterRangeStartDate = false
-        let startDateLaterRangeEndDate = false
-        let startDate, startTime
-        if(this.start) {
-          let startString = this.start
-          if(typeof this.start === 'number'){
-            startString = getDateTime(this.start, this.hideSecond)
-          }
-          [startDate,startTime] = startString.split(' ')
-          if(this.start && !dateCompare(this.start, this.tempRange.startDate)) {
-            startDateLaterRangeStartDate = true
-            this.tempRange.startDate = startDate
-          }
-          if(this.start && !dateCompare(this.start, this.tempRange.endDate)) {
-            startDateLaterRangeEndDate = true
-            this.tempRange.endDate = startDate
-          }
-        }
-        let endDateEarlierRangeStartDate = false
-        let endDateEarlierRangeEndDate = false
-        let endDate, endTime
-        if(this.end) {
-          let endString = this.end
-          if(typeof this.end === 'number'){
-            endString = getDateTime(this.end, this.hideSecond)
-          }
-          [endDate,endTime] = endString.split(' ')
-
-          if(this.end && !dateCompare(this.tempRange.startDate, this.end)) {
-            endDateEarlierRangeStartDate = true
-            this.tempRange.startDate = endDate
-          }
-          if(this.end && !dateCompare(this.tempRange.endDate, this.end)) {
-            endDateEarlierRangeEndDate = true
-            this.tempRange.endDate = endDate
-          }
-        }
-				if (!this.hasTime) {
-          start = this.displayRangeValue.startDate = this.tempRange.startDate
-					end = this.displayRangeValue.endDate = this.tempRange.endDate
-				} else {
-          if(startDateLaterRangeStartDate){
-            this.tempRange.startTime = startTime || getDefaultSecond(this.hideSecond)
-          }else if(endDateEarlierRangeStartDate){
-            this.tempRange.startTime = endTime || getDefaultSecond(this.hideSecond)
-          }
-          if(!this.tempRange.startTime){
-            this.tempRange.startTime = getTime(Date.now(), this.hideSecond)
-          }
-
-          if(startDateLaterRangeEndDate){
-            this.tempRange.endTime = startTime || getDefaultSecond(this.hideSecond)
-          }else if(endDateEarlierRangeEndDate){
-            this.tempRange.endTime = endTime || getDefaultSecond(this.hideSecond)
-          }
-          if(!this.tempRange.endTime){
-            this.tempRange.endTime = getTime(Date.now(), this.hideSecond)
-          }
-					start = this.displayRangeValue.startDate = `${this.tempRange.startDate} ${this.tempRange.startTime}`
-					end = this.displayRangeValue.endDate = `${this.tempRange.endDate} ${this.tempRange.endTime}`
-				}
-        if(!dateCompare(start,end)){
-          [start, end] = [end, start]
-        }
-				this.displayRangeValue.startDate = start
-				this.displayRangeValue.endDate = end
-				const displayRange = [start, end]
-				this.setEmit(displayRange)
-				this.pickerVisible = false
-			},
-			handleStartAndEnd(before, after, temp = false) {
-				if (!(before && after)) return
-
-				const type = temp ? 'tempRange' : 'range'
-        const isStartEarlierEnd = dateCompare(before, after)
-        this[type].startDate = isStartEarlierEnd ? before : after
-        this[type].endDate = isStartEarlierEnd ? after : before
-    },
-			/**
-			 * 比较时间大小
-			 */
-			dateCompare(startDate, endDate) {
-				// 计算截止时间
-				startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
-				// 计算详细项的截止时间
-				endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
-				return startDate <= endDate
-			},
-
-			/**
-			 * 比较时间差
-			 */
-			diffDate(startDate, endDate) {
-				// 计算截止时间
-				startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
-				// 计算详细项的截止时间
-				endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
-				const diff = (endDate - startDate) / (24 * 60 * 60 * 1000)
-				return Math.abs(diff)
-			},
-
-			clear(needEmit = true) {
-				if (!this.isRange) {
-					this.displayValue = ''
-					this.inputDate = ''
-					this.pickerTime = ''
-					if (this.isPhone) {
-						this.$refs.mobile && this.$refs.mobile.clearCalender()
-					} else {
-						this.$refs.pcSingle && this.$refs.pcSingle.clearCalender()
-					}
-					if (needEmit) {
-						this.$emit('change', '')
-						this.$emit('input', '')
-						this.$emit('update:modelValue', '')
-					}
-				} else {
-					this.displayRangeValue.startDate = ''
-					this.displayRangeValue.endDate = ''
-					this.tempRange.startDate = ''
-					this.tempRange.startTime = ''
-					this.tempRange.endDate = ''
-					this.tempRange.endTime = ''
-					if (this.isPhone) {
-						this.$refs.mobile && this.$refs.mobile.clearCalender()
-					} else {
-						this.$refs.left && this.$refs.left.clearCalender()
-						this.$refs.right && this.$refs.right.clearCalender()
-						this.$refs.right && this.$refs.right.changeMonth('next')
-					}
-					if (needEmit) {
-						this.$emit('change', [])
-						this.$emit('input', [])
-						this.$emit('update:modelValue', [])
-					}
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-primary: #007aff !default;
-
-	.uni-date {
-		width: 100%;
-		flex: 1;
-	}
-	.uni-date-x {
-		display: flex;
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		border-radius: 4px;
-		background-color: #fff;
-		color: #666;
-		font-size: 14px;
-		flex: 1;
-
-    .icon-calendar{
-      padding-left: 3px;
-    }
-    .range-separator{
-      height: 35px;
-      /* #ifndef MP */
-      padding: 0 2px;
-      /* #endif */
-			line-height: 35px;
-    }
-	}
-
-	.uni-date-x--border {
-		box-sizing: border-box;
-		border-radius: 4px;
-		border: 1px solid #e5e5e5;
-	}
-
-	.uni-date-editor--x {
-		display: flex;
-		align-items: center;
-		position: relative;
-	}
-
-	.uni-date-editor--x .uni-date__icon-clear {
-		padding-right: 3px;
-		display: flex;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-date__x-input {
-		width: auto;
-		height: 35px;
-    /* #ifndef MP */
-    padding-left: 5px;
-    /* #endif */
-		position: relative;
-		flex: 1;
-		line-height: 35px;
-		font-size: 14px;
-		overflow: hidden;
-	}
-
-	.text-center {
-		text-align: center;
-	}
-
-	.uni-date__input {
-		height: 40px;
-		width: 100%;
-		line-height: 40px;
-		font-size: 14px;
-	}
-
-	.uni-date-range__input {
-		text-align: center;
-		max-width: 142px;
-	}
-
-	.uni-date-picker__container {
-		position: relative;
-	}
-
-	.uni-date-mask--pc {
-		position: fixed;
-		bottom: 0px;
-		top: 0px;
-		left: 0px;
-		right: 0px;
-		background-color: rgba(0, 0, 0, 0);
-		transition-duration: 0.3s;
-		z-index: 996;
-	}
-
-	.uni-date-single--x {
-		background-color: #fff;
-		position: absolute;
-		top: 0;
-		z-index: 999;
-		border: 1px solid #EBEEF5;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-		border-radius: 4px;
-	}
-
-	.uni-date-range--x {
-		background-color: #fff;
-		position: absolute;
-		top: 0;
-		z-index: 999;
-		border: 1px solid #EBEEF5;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-		border-radius: 4px;
-	}
-
-	.uni-date-editor--x__disabled {
-		opacity: 0.4;
-		cursor: default;
-	}
-
-	.uni-date-editor--logo {
-		width: 16px;
-		height: 16px;
-		vertical-align: middle;
-	}
-
-	/* 添加时间 */
-	.popup-x-header {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.popup-x-header--datetime {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex: 1;
-	}
-
-	.popup-x-body {
-		display: flex;
-	}
-
-	.popup-x-footer {
-		padding: 0 15px;
-		border-top-color: #F1F1F1;
-		border-top-style: solid;
-		border-top-width: 1px;
-		line-height: 40px;
-		text-align: right;
-		color: #666;
-	}
-
-	.popup-x-footer text:hover {
-		color: $uni-primary;
-		cursor: pointer;
-		opacity: 0.8;
-	}
-
-	.popup-x-footer .confirm-text {
-		margin-left: 20px;
-		color: $uni-primary;
-	}
-
-	.uni-date-changed {
-		text-align: center;
-		color: #333;
-		border-bottom-color: #F1F1F1;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-	}
-
-	.uni-date-changed--time text {
-		height: 50px;
-		line-height: 50px;
-	}
-
-	.uni-date-changed .uni-date-changed--time {
-		flex: 1;
-	}
-
-	.uni-date-changed--time-date {
-		color: #333;
-		opacity: 0.6;
-	}
-
-	.mr-50 {
-		margin-right: 50px;
-	}
-
-	/* picker 弹出层通用的指示小三角, todo:扩展至上下左右方向定位 */
-	.uni-popper__arrow,
-	.uni-popper__arrow::after {
-		position: absolute;
-		display: block;
-		width: 0;
-		height: 0;
-		border: 6px solid transparent;
-		border-top-width: 0;
-	}
-
-	.uni-popper__arrow {
-		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
-		top: -6px;
-		left: 10%;
-		margin-right: 3px;
-		border-bottom-color: #EBEEF5;
-	}
-
-	.uni-popper__arrow::after {
-		content: " ";
-		top: 1px;
-		margin-left: -6px;
-		border-bottom-color: #fff;
-	}
-</style>

+ 0 - 403
node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/util.js

@@ -1,403 +0,0 @@
-class Calendar {
-	constructor({
-		selected,
-		startDate,
-		endDate,
-		range,
-	} = {}) {
-		// 当前日期
-		this.date = this.getDateObj(new Date()) // 当前初入日期
-		// 打点信息
-		this.selected = selected || [];
-		// 起始时间
-		this.startDate = startDate
-		// 终止时间
-		this.endDate = endDate
-    // 是否范围选择
-		this.range = range
-		// 多选状态
-		this.cleanMultipleStatus()
-		// 每周日期
-		this.weeks = {}
-		this.lastHover = false
-	}
-	/**
-	 * 设置日期
-	 * @param {Object} date
-	 */
-	setDate(date) {
-		const selectDate = this.getDateObj(date)
-		this.getWeeks(selectDate.fullDate)
-	}
-
-	/**
-	 * 清理多选状态
-	 */
-	cleanMultipleStatus() {
-		this.multipleStatus = {
-			before: '',
-			after: '',
-			data: []
-		}
-	}
-
-	setStartDate(startDate) {
-		this.startDate = startDate
-	}
-
-	setEndDate(endDate) {
-		this.endDate = endDate
-	}
-
-  getPreMonthObj(date){
-    date = fixIosDateFormat(date)
-    date = new Date(date)
-
-    const oldMonth = date.getMonth()
-    date.setMonth(oldMonth - 1)
-    const newMonth = date.getMonth()
-    if(oldMonth !== 0 && newMonth - oldMonth === 0){
-      date.setMonth(newMonth - 1)
-    }
-    return this.getDateObj(date)
-  }
-  getNextMonthObj(date){
-    date = fixIosDateFormat(date)
-    date = new Date(date)
-
-    const oldMonth = date.getMonth()
-    date.setMonth(oldMonth + 1)
-    const newMonth = date.getMonth()
-    if(newMonth - oldMonth > 1){
-      date.setMonth(newMonth - 1)
-    }
-    return this.getDateObj(date)
-  }
-
-	/**
-	 * 获取指定格式Date对象
-	 */
-	getDateObj(date) {
-    date = fixIosDateFormat(date)
-    date = new Date(date)
-
-		return {
-			fullDate: getDate(date),
-      year: date.getFullYear(),
-      month: addZero(date.getMonth() + 1),
-      date: addZero(date.getDate()),
-      day: date.getDay()
-		}
-	}
-
-	/**
-	 * 获取上一个月日期集合
-	 */
-	getPreMonthDays(amount, dateObj) {
-		const result = []
-		for (let i = amount - 1; i >= 0; i--) {
-      const month = dateObj.month - 1
-			result.push({
-				date: new Date(dateObj.year, month, -i).getDate(),
-				month,
-				disable: true
-			})
-		}
-		return result
-	}
-	/**
-	 * 获取本月日期集合
-	 */
-	getCurrentMonthDays(amount, dateObj) {
-		const result = []
-		const fullDate = this.date.fullDate
-		for (let i = 1; i <= amount; i++) {
-			const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}`
-			const isToday = fullDate === currentDate
-			// 获取打点信息
-			const info = this.selected && this.selected.find((item) => {
-				if (this.dateEqual(currentDate, item.date)) {
-					return item
-				}
-			})
-
-			// 日期禁用
-			let disableBefore = true
-			let disableAfter = true
-			if (this.startDate) {
-				disableBefore = dateCompare(this.startDate, currentDate)
-			}
-
-			if (this.endDate) {
-				disableAfter = dateCompare(currentDate, this.endDate)
-			}
-
-			let multiples = this.multipleStatus.data
-			let multiplesStatus = -1
-			if (this.range && multiples) {
-        multiplesStatus = multiples.findIndex((item) => {
-          return this.dateEqual(item, currentDate)
-        })
-			}
-      const checked = multiplesStatus !== -1
-
-			result.push({
-				fullDate: currentDate,
-				year: dateObj.year,
-				date: i,
-				multiple: this.range ? checked : false,
-				beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after),
-				afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after),
-				month: dateObj.month,
-				disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)),
-				isToday,
-				userChecked: false,
-        extraInfo: info
-			})
-		}
-		return result
-	}
-	/**
-	 * 获取下一个月日期集合
-	 */
-	_getNextMonthDays(amount, dateObj) {
-		const result = []
-    const month = dateObj.month + 1
-		for (let i = 1; i <= amount; i++) {
-			result.push({
-				date: i,
-				month,
-				disable: true
-			})
-		}
-		return result
-	}
-
-	/**
-	 * 获取当前日期详情
-	 * @param {Object} date
-	 */
-	getInfo(date) {
-		if (!date) {
-			date = new Date()
-		}
-
-		return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate)
-	}
-
-	/**
-	 * 比较时间是否相等
-	 */
-	dateEqual(before, after) {
-		before = new Date(fixIosDateFormat(before))
-		after = new Date(fixIosDateFormat(after))
-		return before.valueOf() === after.valueOf()
-	}
-
-	/**
-	 *  比较真实起始日期
-	 */
-
-	isLogicBefore(currentDate, before, after) {
-		let logicBefore = before
-		if (before && after) {
-			logicBefore = dateCompare(before, after) ? before : after
-		}
-		return this.dateEqual(logicBefore, currentDate)
-	}
-
-	isLogicAfter(currentDate, before, after) {
-		let logicAfter = after
-		if (before && after) {
-			logicAfter = dateCompare(before, after) ? after : before
-		}
-		return this.dateEqual(logicAfter, currentDate)
-	}
-
-	/**
-	 * 获取日期范围内所有日期
-	 * @param {Object} begin
-	 * @param {Object} end
-	 */
-	geDateAll(begin, end) {
-		var arr = []
-		var ab = begin.split('-')
-		var ae = end.split('-')
-		var db = new Date()
-		db.setFullYear(ab[0], ab[1] - 1, ab[2])
-		var de = new Date()
-		de.setFullYear(ae[0], ae[1] - 1, ae[2])
-		var unixDb = db.getTime() - 24 * 60 * 60 * 1000
-		var unixDe = de.getTime() - 24 * 60 * 60 * 1000
-		for (var k = unixDb; k <= unixDe;) {
-			k = k + 24 * 60 * 60 * 1000
-			arr.push(this.getDateObj(new Date(parseInt(k))).fullDate)
-		}
-		return arr
-	}
-
-	/**
-	 *  获取多选状态
-	 */
-	setMultiple(fullDate) {
-    if (!this.range) return
-
-		let {
-			before,
-			after
-		} = this.multipleStatus
-		if (before && after) {
-			if (!this.lastHover) {
-				this.lastHover = true
-				return
-			}
-			this.multipleStatus.before = fullDate
-			this.multipleStatus.after = ''
-			this.multipleStatus.data = []
-			this.multipleStatus.fulldate = ''
-			this.lastHover = false
-		} else {
-			if (!before) {
-				this.multipleStatus.before = fullDate
-				this.lastHover = false
-			} else {
-				this.multipleStatus.after = fullDate
-				if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
-					this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus
-						.after);
-				} else {
-					this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus
-						.before);
-				}
-				this.lastHover = true
-			}
-		}
-		this.getWeeks(fullDate)
-	}
-
-	/**
-	 *  鼠标 hover 更新多选状态
-	 */
-	setHoverMultiple(fullDate) {
-    if (!this.range || this.lastHover) return
-
-		const { before } = this.multipleStatus
-
-		if (!before) {
-			this.multipleStatus.before = fullDate
-		} else {
-			this.multipleStatus.after = fullDate
-			if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
-				this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
-			} else {
-				this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
-			}
-		}
-		this.getWeeks(fullDate)
-	}
-
-	/**
-	 * 更新默认值多选状态
-	 */
-	setDefaultMultiple(before, after) {
-		this.multipleStatus.before = before
-		this.multipleStatus.after = after
-		if (before && after) {
-			if (dateCompare(before, after)) {
-				this.multipleStatus.data = this.geDateAll(before, after);
-				this.getWeeks(after)
-			} else {
-				this.multipleStatus.data = this.geDateAll(after, before);
-				this.getWeeks(before)
-			}
-		}
-	}
-
-	/**
-	 * 获取每周数据
-	 * @param {Object} dateData
-	 */
-	getWeeks(dateData) {
-		const {
-			year,
-			month,
-		} = this.getDateObj(dateData)
-
-		const preMonthDayAmount = new Date(year, month - 1, 1).getDay()
-    const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData))
-
-		const currentMonthDayAmount = new Date(year, month, 0).getDate()
-    const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData))
-
-    const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount
-    const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData))
-
-		const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays]
-
-		const weeks = new Array(6)
-		for (let i = 0; i < calendarDays.length; i++) {
-      const index = Math.floor(i / 7)
-      if(!weeks[index]){
-        weeks[index] = new Array(7)
-      }
-			weeks[index][i % 7] = calendarDays[i]
-		}
-
-		this.calendar = calendarDays
-		this.weeks = weeks
-	}
-}
-
-function getDateTime(date, hideSecond){
-  return `${getDate(date)} ${getTime(date, hideSecond)}`
-}
-
-function getDate(date) {
-  date = fixIosDateFormat(date)
-  date = new Date(date)
-  const year = date.getFullYear()
-  const month = date.getMonth()+1
-  const day = date.getDate()
-  return `${year}-${addZero(month)}-${addZero(day)}`
-}
-
-function getTime(date, hideSecond){
-  date = fixIosDateFormat(date)
-  date = new Date(date)
-  const hour = date.getHours()
-  const minute = date.getMinutes()
-  const second = date.getSeconds()
-  return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}`
-}
-
-function addZero(num) {
-  if(num < 10){
-    num = `0${num}`
-  }
-  return num
-}
-
-function getDefaultSecond(hideSecond) {
-  return hideSecond ? '00:00' : '00:00:00'
-}
-
-function dateCompare(startDate, endDate) {
-  startDate = new Date(fixIosDateFormat(startDate))
-  endDate = new Date(fixIosDateFormat(endDate))
-  return startDate <= endDate
-}
-
-function checkDate(date){
-  const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g
-  return date.match(dateReg)
-}
-
-const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])?$/
-function fixIosDateFormat(value) {
-  if (typeof value === 'string' && dateTimeReg.test(value)) {
-    value = value.replace(/-/g, '/')
-  }
-  return value
-}
-
-export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat}

+ 0 - 45
node_modules/@dcloudio/uni-ui/lib/uni-drawer/keypress.js

@@ -1,45 +0,0 @@
-// #ifdef H5
-export default {
-  name: 'Keypress',
-  props: {
-    disable: {
-      type: Boolean,
-      default: false
-    }
-  },
-  mounted () {
-    const keyNames = {
-      esc: ['Esc', 'Escape'],
-      tab: 'Tab',
-      enter: 'Enter',
-      space: [' ', 'Spacebar'],
-      up: ['Up', 'ArrowUp'],
-      left: ['Left', 'ArrowLeft'],
-      right: ['Right', 'ArrowRight'],
-      down: ['Down', 'ArrowDown'],
-      delete: ['Backspace', 'Delete', 'Del']
-    }
-    const listener = ($event) => {
-      if (this.disable) {
-        return
-      }
-      const keyName = Object.keys(keyNames).find(key => {
-        const keyName = $event.key
-        const value = keyNames[key]
-        return value === keyName || (Array.isArray(value) && value.includes(keyName))
-      })
-      if (keyName) {
-        // 避免和其他按键事件冲突
-        setTimeout(() => {
-          this.$emit(keyName, {})
-        }, 0)
-      }
-    }
-    document.addEventListener('keyup', listener)
-    // this.$once('hook:beforeDestroy', () => {
-    //   document.removeEventListener('keyup', listener)
-    // })
-  },
-	render: () => {}
-}
-// #endif

+ 0 - 183
node_modules/@dcloudio/uni-ui/lib/uni-drawer/uni-drawer.vue

@@ -1,183 +0,0 @@
-<template>
-	<view v-if="visibleSync" :class="{ 'uni-drawer--visible': showDrawer }" class="uni-drawer" @touchmove.stop.prevent="clear">
-		<view class="uni-drawer__mask" :class="{ 'uni-drawer__mask--visible': showDrawer && mask }" @tap="close('mask')" />
-		<view class="uni-drawer__content" :class="{'uni-drawer--right': rightMode,'uni-drawer--left': !rightMode, 'uni-drawer__content--visible': showDrawer}" :style="{width:drawerWidth+'px'}">
-			<slot />
-		</view>
-		<!-- #ifdef H5 -->
-		<keypress @esc="close('mask')" />
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	// #ifdef H5
-	import keypress from './keypress.js'
-	// #endif
-	/**
-	 * Drawer 抽屉
-	 * @description 抽屉侧滑菜单
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=26
-	 * @property {Boolean} mask = [true | false] 是否显示遮罩
-	 * @property {Boolean} maskClick = [true | false] 点击遮罩是否关闭
-	 * @property {Boolean} mode = [left | right] Drawer 滑出位置
-	 * 	@value left 从左侧滑出
-	 * 	@value right 从右侧侧滑出
-	 * @property {Number} width 抽屉的宽度 ,仅 vue 页面生效
-	 * @event {Function} close 组件关闭时触发事件
-	 */
-	export default {
-		name: 'UniDrawer',
-		components: {
-			// #ifdef H5
-			keypress
-			// #endif
-		},
-		emits:['change'],
-		props: {
-			/**
-			 * 显示模式(左、右),只在初始化生效
-			 */
-			mode: {
-				type: String,
-				default: ''
-			},
-			/**
-			 * 蒙层显示状态
-			 */
-			mask: {
-				type: Boolean,
-				default: true
-			},
-			/**
-			 * 遮罩是否可点击关闭
-			 */
-			maskClick:{
-				type: Boolean,
-				default: true
-			},
-			/**
-			 * 抽屉宽度
-			 */
-			width: {
-				type: Number,
-				default: 220
-			}
-		},
-		data() {
-			return {
-				visibleSync: false,
-				showDrawer: false,
-				rightMode: false,
-				watchTimer: null,
-				drawerWidth: 220
-			}
-		},
-		created() {
-			// #ifndef APP-NVUE
-			this.drawerWidth = this.width
-			// #endif
-			this.rightMode = this.mode === 'right'
-		},
-		methods: {
-			clear(){},
-			close(type) {
-				// fixed by mehaotian 抽屉尚未完全关闭或遮罩禁止点击时不触发以下逻辑
-				if((type === 'mask' && !this.maskClick) || !this.visibleSync) return
-				this._change('showDrawer', 'visibleSync', false)
-			},
-			open() {
-				// fixed by mehaotian 处理重复点击打开的事件
-				if(this.visibleSync) return
-				this._change('visibleSync', 'showDrawer', true)
-			},
-			_change(param1, param2, status) {
-				this[param1] = status
-				if (this.watchTimer) {
-					clearTimeout(this.watchTimer)
-				}
-				this.watchTimer = setTimeout(() => {
-					this[param2] = status
-					this.$emit('change',status)
-				}, status ? 50 : 300)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-mask: rgba($color: #000000, $alpha: 0.4) ;
-	// 抽屉宽度
-	$drawer-width: 220px;
-
-	.uni-drawer {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		overflow: hidden;
-		z-index: 999;
-	}
-
-	.uni-drawer__content {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: absolute;
-		top: 0;
-		width: $drawer-width;
-		bottom: 0;
-		background-color: $uni-bg-color;
-		transition: transform 0.3s ease;
-	}
-
-	.uni-drawer--left {
-		left: 0;
-		/* #ifdef APP-NVUE */
-		transform: translateX(-$drawer-width);
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		transform: translateX(-100%);
-		/* #endif */
-	}
-
-	.uni-drawer--right {
-		right: 0;
-		/* #ifdef APP-NVUE */
-		transform: translateX($drawer-width);
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		transform: translateX(100%);
-		/* #endif */
-	}
-
-	.uni-drawer__content--visible {
-		transform: translateX(0px);
-	}
-
-
-	.uni-drawer__mask {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		opacity: 0;
-		position: absolute;
-		top: 0;
-		left: 0;
-		bottom: 0;
-		right: 0;
-		background-color: $uni-mask;
-		transition: opacity 0.3s;
-	}
-
-	.uni-drawer__mask--visible {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		opacity: 1;
-	}
-</style>

+ 0 - 56
node_modules/@dcloudio/uni-ui/lib/uni-easyinput/common.js

@@ -1,56 +0,0 @@
-/**
- * @desc 函数防抖
- * @param func 目标函数
- * @param wait 延迟执行毫秒数
- * @param immediate true - 立即执行, false - 延迟执行
- */
-export const debounce = function(func, wait = 1000, immediate = true) {
-	let timer;
-	console.log(1);
-	return function() {
-		console.log(123);
-		let context = this,
-			args = arguments;
-		if (timer) clearTimeout(timer);
-		if (immediate) {
-			let callNow = !timer;
-			timer = setTimeout(() => {
-				timer = null;
-			}, wait);
-			if (callNow) func.apply(context, args);
-		} else {
-			timer = setTimeout(() => {
-				func.apply(context, args);
-			}, wait)
-		}
-	}
-}
-/**
- * @desc 函数节流
- * @param func 函数
- * @param wait 延迟执行毫秒数
- * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发
- */
-export const throttle = (func, wait = 1000, type = 1) => {
-	let previous = 0;
-	let timeout;
-	return function() {
-		let context = this;
-		let args = arguments;
-		if (type === 1) {
-			let now = Date.now();
-
-			if (now - previous > wait) {
-				func.apply(context, args);
-				previous = now;
-			}
-		} else if (type === 2) {
-			if (!timeout) {
-				timeout = setTimeout(() => {
-					timeout = null;
-					func.apply(context, args)
-				}, wait)
-			}
-		}
-	}
-}

+ 0 - 657
node_modules/@dcloudio/uni-ui/lib/uni-easyinput/uni-easyinput.vue

@@ -1,657 +0,0 @@
-<template>
-	<view class="uni-easyinput" :class="{ 'uni-easyinput-error': msg }" :style="boxStyle">
-		<view class="uni-easyinput__content" :class="inputContentClass" :style="inputContentStyle">
-			<uni-icons v-if="prefixIcon" class="content-clear-icon" :type="prefixIcon" color="#c0c4cc" @click="onClickIcon('prefix')" size="22"></uni-icons>
-			<textarea
-				v-if="type === 'textarea'"
-				class="uni-easyinput__content-textarea"
-				:class="{ 'input-padding': inputBorder }"
-				:name="name"
-				:value="val"
-				:placeholder="placeholder"
-				:placeholderStyle="placeholderStyle"
-				:disabled="disabled"
-				placeholder-class="uni-easyinput__placeholder-class"
-				:maxlength="inputMaxlength"
-				:focus="focused"
-				:autoHeight="autoHeight"
-				:cursor-spacing="cursorSpacing"
-				@input="onInput"
-				@blur="_Blur"
-				@focus="_Focus"
-				@confirm="onConfirm"
-        @keyboardheightchange="onkeyboardheightchange"
-			></textarea>
-			<input
-				v-else
-				:type="type === 'password' ? 'text' : type"
-				class="uni-easyinput__content-input"
-				:style="inputStyle"
-				:name="name"
-				:value="val"
-				:password="!showPassword && type === 'password'"
-				:placeholder="placeholder"
-				:placeholderStyle="placeholderStyle"
-				placeholder-class="uni-easyinput__placeholder-class"
-				:disabled="disabled"
-				:maxlength="inputMaxlength"
-				:focus="focused"
-				:confirmType="confirmType"
-				:cursor-spacing="cursorSpacing"
-				@focus="_Focus"
-				@blur="_Blur"
-				@input="onInput"
-				@confirm="onConfirm"
-        @keyboardheightchange="onkeyboardheightchange"
-			/>
-			<template v-if="type === 'password' && passwordIcon">
-				<!-- 开启密码时显示小眼睛 -->
-				<uni-icons
-					v-if="isVal"
-					class="content-clear-icon"
-					:class="{ 'is-textarea-icon': type === 'textarea' }"
-					:type="showPassword ? 'eye-slash-filled' : 'eye-filled'"
-					:size="22"
-					:color="focusShow ? primaryColor : '#c0c4cc'"
-					@click="onEyes"
-				></uni-icons>
-			</template>
-			<template v-else-if="suffixIcon">
-				<uni-icons v-if="suffixIcon" class="content-clear-icon" :type="suffixIcon" color="#c0c4cc" @click="onClickIcon('suffix')" size="22"></uni-icons>
-			</template>
-			<template v-else>
-				<uni-icons
-					v-if="clearable && isVal && !disabled && type !== 'textarea'"
-					class="content-clear-icon"
-					:class="{ 'is-textarea-icon': type === 'textarea' }"
-					type="clear"
-					:size="clearSize"
-					:color="msg ? '#dd524d' : focusShow ? primaryColor : '#c0c4cc'"
-					@click="onClear"
-				></uni-icons>
-			</template>
-			<slot name="right"></slot>
-		</view>
-	</view>
-</template>
-
-<script>
-/**
- * Easyinput 输入框
- * @description 此组件可以实现表单的输入与校验,包括 "text" 和 "textarea" 类型。
- * @tutorial https://ext.dcloud.net.cn/plugin?id=3455
- * @property {String}	value	输入内容
- * @property {String }	type	输入框的类型(默认text) password/text/textarea/..
- * 	@value text			文本输入键盘
- * 	@value textarea	多行文本输入键盘
- * 	@value password	密码输入键盘
- * 	@value number		数字输入键盘,注意iOS上app-vue弹出的数字键盘并非9宫格方式
- * 	@value idcard		身份证输入键盘,信、支付宝、百度、QQ小程序
- * 	@value digit		带小数点的数字键盘	,App的nvue页面、微信、支付宝、百度、头条、QQ小程序支持
- * @property {Boolean}	clearable	是否显示右侧清空内容的图标控件,点击可清空输入框内容(默认true)
- * @property {Boolean}	autoHeight	是否自动增高输入区域,type为textarea时有效(默认true)
- * @property {String }	placeholder	输入框的提示文字
- * @property {String }	placeholderStyle	placeholder的样式(内联样式,字符串),如"color: #ddd"
- * @property {Boolean}	focus	是否自动获得焦点(默认false)
- * @property {Boolean}	disabled	是否禁用(默认false)
- * @property {Number }	maxlength	最大输入长度,设置为 -1 的时候不限制最大长度(默认140)
- * @property {String }	confirmType	设置键盘右下角按钮的文字,仅在type="text"时生效(默认done)
- * @property {Number }	clearSize	清除图标的大小,单位px(默认15)
- * @property {String}	prefixIcon	输入框头部图标
- * @property {String}	suffixIcon	输入框尾部图标
- * @property {String}	primaryColor	设置主题色(默认#2979ff)
- * @property {Boolean}	trim	是否自动去除两端的空格
- * @property {Boolean}	cursorSpacing	指定光标与键盘的距离,单位 px
- * @value both	去除两端空格
- * @value left	去除左侧空格
- * @value right	去除右侧空格
- * @value start	去除左侧空格
- * @value end		去除右侧空格
- * @value all		去除全部空格
- * @value none	不去除空格
- * @property {Boolean}	inputBorder	是否显示input输入框的边框(默认true)
- * @property {Boolean}	passwordIcon	type=password时是否显示小眼睛图标
- * @property {Object}	styles	自定义颜色
- * @event {Function}	input	输入框内容发生变化时触发
- * @event {Function}	focus	输入框获得焦点时触发
- * @event {Function}	blur	输入框失去焦点时触发
- * @event {Function}	confirm	点击完成按钮时触发
- * @event {Function}	iconClick	点击图标时触发
- * @example <uni-easyinput v-model="mobile"></uni-easyinput>
- */
-function obj2strClass(obj) {
-	let classess = '';
-	for (let key in obj) {
-		const val = obj[key];
-		if (val) {
-			classess += `${key} `;
-		}
-	}
-	return classess;
-}
-
-function obj2strStyle(obj) {
-	let style = '';
-	for (let key in obj) {
-		const val = obj[key];
-		style += `${key}:${val};`;
-	}
-	return style;
-}
-export default {
-	name: 'uni-easyinput',
-	emits: ['click', 'iconClick', 'update:modelValue', 'input', 'focus', 'blur', 'confirm', 'clear', 'eyes', 'change', 'keyboardheightchange'],
-	model: {
-		prop: 'modelValue',
-		event: 'update:modelValue'
-	},
-	options: {
-		virtualHost: true
-	},
-	inject: {
-		form: {
-			from: 'uniForm',
-			default: null
-		},
-		formItem: {
-			from: 'uniFormItem',
-			default: null
-		}
-	},
-	props: {
-		name: String,
-		value: [Number, String],
-		modelValue: [Number, String],
-		type: {
-			type: String,
-			default: 'text'
-		},
-		clearable: {
-			type: Boolean,
-			default: true
-		},
-		autoHeight: {
-			type: Boolean,
-			default: false
-		},
-		placeholder: {
-			type: String,
-			default: ' '
-		},
-		placeholderStyle: String,
-		focus: {
-			type: Boolean,
-			default: false
-		},
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		maxlength: {
-			type: [Number, String],
-			default: 140
-		},
-		confirmType: {
-			type: String,
-			default: 'done'
-		},
-		clearSize: {
-			type: [Number, String],
-			default: 24
-		},
-		inputBorder: {
-			type: Boolean,
-			default: true
-		},
-		prefixIcon: {
-			type: String,
-			default: ''
-		},
-		suffixIcon: {
-			type: String,
-			default: ''
-		},
-		trim: {
-			type: [Boolean, String],
-			default: false
-		},
-		cursorSpacing: {
-			type: Number,
-			default: 0
-		},
-		passwordIcon: {
-			type: Boolean,
-			default: true
-		},
-		primaryColor: {
-			type: String,
-			default: '#2979ff'
-		},
-		styles: {
-			type: Object,
-			default() {
-				return {
-					color: '#333',
-					backgroundColor: '#fff',
-					disableColor: '#F7F6F6',
-					borderColor: '#e5e5e5'
-				};
-			}
-		},
-		errorMessage: {
-			type: [String, Boolean],
-			default: ''
-		}
-	},
-	data() {
-		return {
-			focused: false,
-			val: '',
-			showMsg: '',
-			border: false,
-			isFirstBorder: false,
-			showClearIcon: false,
-			showPassword: false,
-			focusShow: false,
-			localMsg: '',
-			isEnter: false // 用于判断当前是否是使用回车操作
-		};
-	},
-	computed: {
-		// 输入框内是否有值
-		isVal() {
-			const val = this.val;
-			// fixed by mehaotian 处理值为0的情况,字符串0不在处理范围
-			if (val || val === 0) {
-				return true;
-			}
-			return false;
-		},
-
-		msg() {
-			// console.log('computed', this.form, this.formItem);
-			// if (this.form) {
-			// 	return this.errorMessage || this.formItem.errMsg;
-			// }
-			// TODO 处理头条 formItem 中 errMsg 不更新的问题
-			return this.localMsg || this.errorMessage;
-		},
-		// 因为uniapp的input组件的maxlength组件必须要数值,这里转为数值,用户可以传入字符串数值
-		inputMaxlength() {
-			return Number(this.maxlength);
-		},
-
-		// 处理外层样式的style
-		boxStyle() {
-			return `color:${this.inputBorder && this.msg ? '#e43d33' : this.styles.color};`;
-		},
-		// input 内容的类和样式处理
-		inputContentClass() {
-			return obj2strClass({
-				'is-input-border': this.inputBorder,
-				'is-input-error-border': this.inputBorder && this.msg,
-				'is-textarea': this.type === 'textarea',
-				'is-disabled': this.disabled,
-				'is-focused': this.focusShow
-			});
-		},
-		inputContentStyle() {
-			const focusColor = this.focusShow ? this.primaryColor : this.styles.borderColor;
-			const borderColor = this.inputBorder && this.msg ? '#dd524d' : focusColor;
-			return obj2strStyle({
-				'border-color': borderColor || '#e5e5e5',
-				'background-color': this.disabled ? this.styles.disableColor : this.styles.backgroundColor
-			});
-		},
-		// input右侧样式
-		inputStyle() {
-			const paddingRight = this.type === 'password' || this.clearable || this.prefixIcon ? '' : '10px';
-			return obj2strStyle({
-				'padding-right': paddingRight,
-				'padding-left': this.prefixIcon ? '' : '10px'
-			});
-		}
-	},
-	watch: {
-		value(newVal) {
-			this.val = newVal;
-		},
-		modelValue(newVal) {
-			this.val = newVal;
-		},
-		focus(newVal) {
-			this.$nextTick(() => {
-				this.focused = this.focus;
-				this.focusShow = this.focus;
-			});
-		}
-	},
-	created() {
-		this.init();
-		// TODO 处理头条vue3 computed 不监听 inject 更改的问题(formItem.errMsg)
-		if (this.form && this.formItem) {
-			this.$watch('formItem.errMsg', newVal => {
-				this.localMsg = newVal;
-			});
-		}
-	},
-	mounted() {
-		this.$nextTick(() => {
-			this.focused = this.focus;
-			this.focusShow = this.focus;
-		});
-	},
-	methods: {
-		/**
-		 * 初始化变量值
-		 */
-		init() {
-			if (this.value || this.value === 0) {
-				this.val = this.value;
-			} else if (this.modelValue || this.modelValue === 0 || this.modelValue === '') {
-				this.val = this.modelValue;
-			} else {
-				this.val = null;
-			}
-		},
-
-		/**
-		 * 点击图标时触发
-		 * @param {Object} type
-		 */
-		onClickIcon(type) {
-			this.$emit('iconClick', type);
-		},
-
-		/**
-		 * 显示隐藏内容,密码框时生效
-		 */
-		onEyes() {
-			this.showPassword = !this.showPassword;
-			this.$emit('eyes', this.showPassword);
-		},
-
-		/**
-		 * 输入时触发
-		 * @param {Object} event
-		 */
-		onInput(event) {
-			let value = event.detail.value;
-			// 判断是否去除空格
-			if (this.trim) {
-				if (typeof this.trim === 'boolean' && this.trim) {
-					value = this.trimStr(value);
-				}
-				if (typeof this.trim === 'string') {
-					value = this.trimStr(value, this.trim);
-				}
-			}
-			if (this.errMsg) this.errMsg = '';
-			this.val = value;
-			// TODO 兼容 vue2
-			this.$emit('input', value);
-			// TODO 兼容 vue3
-			this.$emit('update:modelValue', value);
-		},
-
-		/**
-		 * 外部调用方法
-		 * 获取焦点时触发
-		 * @param {Object} event
-		 */
-		onFocus() {
-			this.$nextTick(() => {
-				this.focused = true;
-			});
-			this.$emit('focus', null);
-		},
-
-		_Focus(event) {
-			this.focusShow = true;
-			this.$emit('focus', event);
-		},
-
-		/**
-		 * 外部调用方法
-		 * 失去焦点时触发
-		 * @param {Object} event
-		 */
-		onBlur() {
-			this.focused = false;
-			this.$emit('focus', null);
-		},
-		_Blur(event) {
-			let value = event.detail.value;
-			this.focusShow = false;
-			this.$emit('blur', event);
-			// 根据类型返回值,在event中获取的值理论上讲都是string
-			if (this.isEnter === false) {
-				this.$emit('change', this.val);
-			}
-			// 失去焦点时参与表单校验
-			if (this.form && this.formItem) {
-				const { validateTrigger } = this.form;
-				if (validateTrigger === 'blur') {
-					this.formItem.onFieldChange();
-				}
-			}
-		},
-
-		/**
-		 * 按下键盘的发送键
-		 * @param {Object} e
-		 */
-		onConfirm(e) {
-			this.$emit('confirm', this.val);
-			this.isEnter = true;
-			this.$emit('change', this.val);
-			this.$nextTick(() => {
-				this.isEnter = false;
-			});
-		},
-
-		/**
-		 * 清理内容
-		 * @param {Object} event
-		 */
-		onClear(event) {
-			this.val = '';
-			// TODO 兼容 vue2
-			this.$emit('input', '');
-			// TODO 兼容 vue2
-			// TODO 兼容 vue3
-			this.$emit('update:modelValue', '');
-			// 点击叉号触发
-			this.$emit('clear');
-		},
-
-    /**
-     * 键盘高度发生变化的时候触发此事件
-     * 兼容性:微信小程序2.7.0+、App 3.1.0+
-     * @param {Object} event
-     */
-    onkeyboardheightchange(event) {
-      this.$emit("keyboardheightchange",event);
-    },
-
-		/**
-		 * 去除空格
-		 */
-		trimStr(str, pos = 'both') {
-			if (pos === 'both') {
-				return str.trim();
-			} else if (pos === 'left') {
-				return str.trimLeft();
-			} else if (pos === 'right') {
-				return str.trimRight();
-			} else if (pos === 'start') {
-				return str.trimStart();
-			} else if (pos === 'end') {
-				return str.trimEnd();
-			} else if (pos === 'all') {
-				return str.replace(/\s+/g, '');
-			} else if (pos === 'none') {
-				return str;
-			}
-			return str;
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-$uni-error: #e43d33;
-$uni-border-1: #dcdfe6 !default;
-
-.uni-easyinput {
-	/* #ifndef APP-NVUE */
-	width: 100%;
-	/* #endif */
-	flex: 1;
-	position: relative;
-	text-align: left;
-	color: #333;
-	font-size: 14px;
-}
-
-.uni-easyinput__content {
-	flex: 1;
-	/* #ifndef APP-NVUE */
-	width: 100%;
-	display: flex;
-	box-sizing: border-box;
-	// min-height: 36px;
-	/* #endif */
-	flex-direction: row;
-	align-items: center;
-	// 处理border动画刚开始显示黑色的问题
-	border-color: #fff;
-	transition-property: border-color;
-	transition-duration: 0.3s;
-}
-
-.uni-easyinput__content-input {
-	/* #ifndef APP-NVUE */
-	width: auto;
-	/* #endif */
-	position: relative;
-	overflow: hidden;
-	flex: 1;
-	line-height: 1;
-	font-size: 14px;
-	height: 35px;
-	// min-height: 36px;
-}
-
-.uni-easyinput__placeholder-class {
-	color: #999;
-	font-size: 12px;
-	// font-weight: 200;
-}
-
-.is-textarea {
-	align-items: flex-start;
-}
-
-.is-textarea-icon {
-	margin-top: 5px;
-}
-
-.uni-easyinput__content-textarea {
-	position: relative;
-	overflow: hidden;
-	flex: 1;
-	line-height: 1.5;
-	font-size: 14px;
-	margin: 6px;
-	margin-left: 0;
-	height: 80px;
-	min-height: 80px;
-	/* #ifndef APP-NVUE */
-	min-height: 80px;
-	width: auto;
-	/* #endif */
-}
-
-.input-padding {
-	padding-left: 10px;
-}
-
-.content-clear-icon {
-	padding: 0 5px;
-}
-
-.label-icon {
-	margin-right: 5px;
-	margin-top: -1px;
-}
-
-// 显示边框
-.is-input-border {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	box-sizing: border-box;
-	/* #endif */
-	flex-direction: row;
-	align-items: center;
-	border: 1px solid $uni-border-1;
-	border-radius: 4px;
-	/* #ifdef MP-ALIPAY */
-	overflow: hidden;
-	/* #endif */
-}
-
-.uni-error-message {
-	position: absolute;
-	bottom: -17px;
-	left: 0;
-	line-height: 12px;
-	color: $uni-error;
-	font-size: 12px;
-	text-align: left;
-}
-
-.uni-error-msg--boeder {
-	position: relative;
-	bottom: 0;
-	line-height: 22px;
-}
-
-.is-input-error-border {
-	border-color: $uni-error;
-
-	.uni-easyinput__placeholder-class {
-		color: mix(#fff, $uni-error, 50%);
-	}
-}
-
-.uni-easyinput--border {
-	margin-bottom: 0;
-	padding: 10px 15px;
-	// padding-bottom: 0;
-	border-top: 1px #eee solid;
-}
-
-.uni-easyinput-error {
-	padding-bottom: 0;
-}
-
-.is-first-border {
-	/* #ifndef APP-NVUE */
-	border: none;
-	/* #endif */
-	/* #ifdef APP-NVUE */
-	border-width: 0;
-	/* #endif */
-}
-
-.is-disabled {
-	background-color: #f7f6f6;
-	color: #d5d5d5;
-
-	.uni-easyinput__placeholder-class {
-		color: #d5d5d5;
-		font-size: 12px;
-	}
-}
-</style>

+ 0 - 491
node_modules/@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue

@@ -1,491 +0,0 @@
-<template>
-	<view class="uni-cursor-point">
-		<view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop) && content.length > 0" :class="{
-        'uni-fab--leftBottom': leftBottom,
-        'uni-fab--rightBottom': rightBottom,
-        'uni-fab--leftTop': leftTop,
-        'uni-fab--rightTop': rightTop
-      }" class="uni-fab"
-				:style="nvueBottom"
-			>
-			<view :class="{
-          'uni-fab__content--left': horizontal === 'left',
-          'uni-fab__content--right': horizontal === 'right',
-          'uni-fab__content--flexDirection': direction === 'vertical',
-          'uni-fab__content--flexDirectionStart': flexDirectionStart,
-          'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
-		  'uni-fab__content--other-platform': !isAndroidNvue
-        }" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }"
-				class="uni-fab__content" elevation="5">
-				<view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" />
-				<view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }"
-					class="uni-fab__item" @click="_onItemClick(index, item)">
-					<image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image"
-						mode="aspectFit" />
-					<text class="uni-fab__item-text"
-						:style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text>
-				</view>
-				<view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" />
-			</view>
-		</view>
-		<view :class="{
-		  'uni-fab__circle--leftBottom': leftBottom,
-		  'uni-fab__circle--rightBottom': rightBottom,
-		  'uni-fab__circle--leftTop': leftTop,
-		  'uni-fab__circle--rightTop': rightTop,
-		  'uni-fab__content--other-platform': !isAndroidNvue
-		}" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor, 'bottom': nvueBottom }" @click="_onClick">
-			<uni-icons class="fab-circle-icon" :type="styles.icon" :color="styles.iconColor" size="32"
-				:class="{'uni-fab__plus--active': isShow && content.length > 0}"></uni-icons>
-			<!-- <view class="fab-circle-v"  :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view>
-			<view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow  && content.length > 0}"></view> -->
-		</view>
-	</view>
-</template>
-
-<script>
-	let platform = 'other'
-	// #ifdef APP-NVUE
-	platform = uni.getSystemInfoSync().platform
-	// #endif
-
-	/**
-	 * Fab 悬浮按钮
-	 * @description 点击可展开一个图形按钮菜单
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=144
-	 * @property {Object} pattern 可选样式配置项
-	 * @property {Object} horizontal = [left | right] 水平对齐方式
-	 * 	@value left 左对齐
-	 * 	@value right 右对齐
-	 * @property {Object} vertical = [bottom | top] 垂直对齐方式
-	 * 	@value bottom 下对齐
-	 * 	@value top 上对齐
-	 * @property {Object} direction = [horizontal | vertical] 展开菜单显示方式
-	 * 	@value horizontal 水平显示
-	 * 	@value vertical 垂直显示
-	 * @property {Array} content 展开菜单内容配置项
-	 * @property {Boolean} popMenu 是否使用弹出菜单
-	 * @event {Function} trigger 展开菜单点击事件,返回点击信息
-	 * @event {Function} fabClick 悬浮按钮点击事件
-	 */
-	export default {
-		name: 'UniFab',
-		emits: ['fabClick', 'trigger'],
-		props: {
-			pattern: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			horizontal: {
-				type: String,
-				default: 'left'
-			},
-			vertical: {
-				type: String,
-				default: 'bottom'
-			},
-			direction: {
-				type: String,
-				default: 'horizontal'
-			},
-			content: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			show: {
-				type: Boolean,
-				default: false
-			},
-			popMenu: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				fabShow: false,
-				isShow: false,
-				isAndroidNvue: platform === 'android',
-				styles: {
-					color: '#3c3e49',
-					selectedColor: '#007AFF',
-					backgroundColor: '#fff',
-					buttonColor: '#007AFF',
-					iconColor: '#fff',
-					icon: 'plusempty'
-				}
-			}
-		},
-		computed: {
-			contentWidth(e) {
-				return (this.content.length + 1) * 55 + 15 + 'px'
-			},
-			contentWidthMin() {
-				return '55px'
-			},
-			// 动态计算宽度
-			boxWidth() {
-				return this.getPosition(3, 'horizontal')
-			},
-			// 动态计算高度
-			boxHeight() {
-				return this.getPosition(3, 'vertical')
-			},
-			// 计算左下位置
-			leftBottom() {
-				return this.getPosition(0, 'left', 'bottom')
-			},
-			// 计算右下位置
-			rightBottom() {
-				return this.getPosition(0, 'right', 'bottom')
-			},
-			// 计算左上位置
-			leftTop() {
-				return this.getPosition(0, 'left', 'top')
-			},
-			rightTop() {
-				return this.getPosition(0, 'right', 'top')
-			},
-			flexDirectionStart() {
-				return this.getPosition(1, 'vertical', 'top')
-			},
-			flexDirectionEnd() {
-				return this.getPosition(1, 'vertical', 'bottom')
-			},
-			horizontalLeft() {
-				return this.getPosition(2, 'horizontal', 'left')
-			},
-			horizontalRight() {
-				return this.getPosition(2, 'horizontal', 'right')
-			},
-			// 计算 nvue bottom
-			nvueBottom() {
-				const safeBottom = uni.getSystemInfoSync().windowBottom;
-				// #ifdef APP-NVUE
-				return 30 + safeBottom
-				// #endif
-				// #ifndef APP-NVUE
-				return 30
-				// #endif
-			}
-		},
-		watch: {
-			pattern: {
-				handler(val, oldVal) {
-					this.styles = Object.assign({}, this.styles, val)
-				},
-				deep: true
-			}
-		},
-		created() {
-			this.isShow = this.show
-			if (this.top === 0) {
-				this.fabShow = true
-			}
-			// 初始化样式
-			this.styles = Object.assign({}, this.styles, this.pattern)
-		},
-		methods: {
-			_onClick() {
-				this.$emit('fabClick')
-				if (!this.popMenu) {
-					return
-				}
-				this.isShow = !this.isShow
-			},
-			open() {
-				this.isShow = true
-			},
-			close() {
-				this.isShow = false
-			},
-			/**
-			 * 按钮点击事件
-			 */
-			_onItemClick(index, item) {
-				if (!this.isShow) {
-					return
-				}
-				this.$emit('trigger', {
-					index,
-					item
-				})
-			},
-			/**
-			 * 获取 位置信息
-			 */
-			getPosition(types, paramA, paramB) {
-				if (types === 0) {
-					return this.horizontal === paramA && this.vertical === paramB
-				} else if (types === 1) {
-					return this.direction === paramA && this.vertical === paramB
-				} else if (types === 2) {
-					return this.direction === paramA && this.horizontal === paramB
-				} else {
-					return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-shadow-base:0 1px 5px 2px rgba($color: #000000, $alpha: 0.3) !default;
-
-	.uni-fab {
-		position: fixed;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		z-index: 10;
-		border-radius: 45px;
-		box-shadow: $uni-shadow-base;
-	}
-
-	.uni-cursor-point {
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-fab--active {
-		opacity: 1;
-	}
-
-	.uni-fab--leftBottom {
-		left: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab--leftTop {
-		left: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab--rightBottom {
-		right: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab--rightTop {
-		right: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab__circle {
-		position: fixed;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		width: 55px;
-		height: 55px;
-		background-color: #3c3e49;
-		border-radius: 45px;
-		z-index: 11;
-		// box-shadow: $uni-shadow-base;
-	}
-
-	.uni-fab__circle--leftBottom {
-		left: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-	}
-
-	.uni-fab__circle--leftTop {
-		left: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-	}
-
-	.uni-fab__circle--rightBottom {
-		right: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-	}
-
-	.uni-fab__circle--rightTop {
-		right: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-	}
-
-	.uni-fab__circle--left {
-		left: 0;
-	}
-
-	.uni-fab__circle--right {
-		right: 0;
-	}
-
-	.uni-fab__circle--top {
-		top: 0;
-	}
-
-	.uni-fab__circle--bottom {
-		bottom: 0;
-	}
-
-	.uni-fab__plus {
-		font-weight: bold;
-	}
-
-	// .fab-circle-v {
-	// 	position: absolute;
-	// 	width: 2px;
-	// 	height: 24px;
-	// 	left: 0;
-	// 	top: 0;
-	// 	right: 0;
-	// 	bottom: 0;
-	// 	/* #ifndef APP-NVUE */
-	// 	margin: auto;
-	// 	/* #endif */
-	// 	background-color: white;
-	// 	transform: rotate(0deg);
-	// 	transition: transform 0.3s;
-	// }
-
-	// .fab-circle-h {
-	// 	position: absolute;
-	// 	width: 24px;
-	// 	height: 2px;
-	// 	left: 0;
-	// 	top: 0;
-	// 	right: 0;
-	// 	bottom: 0;
-	// 	/* #ifndef APP-NVUE */
-	// 	margin: auto;
-	// 	/* #endif */
-	// 	background-color: white;
-	// 	transform: rotate(0deg);
-	// 	transition: transform 0.3s;
-	// }
-
-	.fab-circle-icon {
-		transform: rotate(0deg);
-		transition: transform 0.3s;
-		font-weight: 200;
-	}
-
-	.uni-fab__plus--active {
-		transform: rotate(135deg);
-	}
-
-	.uni-fab__content {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		border-radius: 55px;
-		overflow: hidden;
-		transition-property: width, height;
-		transition-duration: 0.2s;
-		width: 55px;
-		border-color: #DDDDDD;
-		border-width: 1rpx;
-		border-style: solid;
-	}
-
-	.uni-fab__content--other-platform {
-		border-width: 0px;
-		box-shadow: $uni-shadow-base;
-	}
-
-	.uni-fab__content--left {
-		justify-content: flex-start;
-	}
-
-	.uni-fab__content--right {
-		justify-content: flex-end;
-	}
-
-	.uni-fab__content--flexDirection {
-		flex-direction: column;
-		justify-content: flex-end;
-	}
-
-	.uni-fab__content--flexDirectionStart {
-		flex-direction: column;
-		justify-content: flex-start;
-	}
-
-	.uni-fab__content--flexDirectionEnd {
-		flex-direction: column;
-		justify-content: flex-end;
-	}
-
-	.uni-fab__item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		width: 55px;
-		height: 55px;
-		opacity: 0;
-		transition: opacity 0.2s;
-	}
-
-	.uni-fab__item--active {
-		opacity: 1;
-	}
-
-	.uni-fab__item-image {
-		width: 20px;
-		height: 20px;
-		margin-bottom: 4px;
-	}
-
-	.uni-fab__item-text {
-		color: #FFFFFF;
-		font-size: 12px;
-		line-height: 12px;
-		margin-top: 2px;
-	}
-
-	.uni-fab__item--first {
-		width: 55px;
-	}
-</style>

+ 0 - 4
node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/en.json

@@ -1,4 +0,0 @@
-{
-	"uni-fav.collect": "collect",
-	"uni-fav.collected": "collected"
-}

+ 0 - 8
node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 4
node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hans.json

@@ -1,4 +0,0 @@
-{
-	"uni-fav.collect": "收藏",
-	"uni-fav.collected": "已收藏"
-}

+ 0 - 4
node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hant.json

@@ -1,4 +0,0 @@
-{
-	"uni-fav.collect": "收藏",
-	"uni-fav.collected": "已收藏"
-}

+ 0 - 161
node_modules/@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue

@@ -1,161 +0,0 @@
-<template>
-	<view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]"
-	 @click="onClick" class="uni-fav">
-		<!-- #ifdef MP-ALIPAY -->
-		<view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
-			<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
-		</view>
-		<!-- #endif -->
-		<!-- #ifndef MP-ALIPAY -->
-		<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled"
-		 v-if="!checked && (star === true || star === 'true')" />
-		<!-- #endif -->
-		<text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentFav : contentDefault }}</text>
-	</view>
-</template>
-
-<script>
-
-	/**
-	 * Fav 收藏按钮
-	 * @description 用于收藏功能,可点击切换选中、不选中的状态
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=864
-	 * @property {Boolean} star = [true|false] 按钮是否带星星
-	 * @property {String} bgColor 未收藏时的背景色
-	 * @property {String} bgColorChecked 已收藏时的背景色
-	 * @property {String} fgColor 未收藏时的文字颜色
-	 * @property {String} fgColorChecked 已收藏时的文字颜色
-	 * @property {Boolean} circle = [true|false] 是否为圆角
-	 * @property {Boolean} checked = [true|false] 是否为已收藏
-	 * @property {Object} contentText = [true|false] 收藏按钮文字
-	 * @property {Boolean} stat 是否开启统计功能
-	 * @event {Function} click 点击 fav按钮触发事件
-	 * @example <uni-fav :checked="true"/>
-	 */
-
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {	t	} = initVueI18n(messages)
-
-	export default {
-		name: "UniFav",
-		// TODO 兼容 vue3,需要注册事件
-		emits: ['click'],
-		props: {
-			star: {
-				type: [Boolean, String],
-				default: true
-			},
-			bgColor: {
-				type: String,
-				default: "#eeeeee"
-			},
-			fgColor: {
-				type: String,
-				default: "#666666"
-			},
-			bgColorChecked: {
-				type: String,
-				default: "#007aff"
-			},
-			fgColorChecked: {
-				type: String,
-				default: "#FFFFFF"
-			},
-			circle: {
-				type: [Boolean, String],
-				default: false
-			},
-			checked: {
-				type: Boolean,
-				default: false
-			},
-			contentText: {
-				type: Object,
-				default () {
-					return {
-						contentDefault: "",
-						contentFav: ""
-					};
-				}
-			},
-			stat:{
-				type: Boolean,
-				default: false
-			}
-		},
-		computed: {
-			contentDefault() {
-				return this.contentText.contentDefault || t("uni-fav.collect")
-			},
-			contentFav() {
-				return this.contentText.contentFav || t("uni-fav.collected")
-			},
-		},
-		watch: {
-			checked() {
-				if (uni.report && this.stat) {
-					if (this.checked) {
-						uni.report("收藏", "收藏");
-					} else {
-						uni.report("取消收藏", "取消收藏");
-					}
-				}
-			}
-		},
-		methods: {
-			onClick() {
-				this.$emit("click");
-			}
-		}
-	};
-</script>
-
-<style lang="scss" >
-	$fav-height: 25px;
-
-	.uni-fav {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		width: 60px;
-		height: $fav-height;
-		line-height: $fav-height;
-		text-align: center;
-		border-radius: 3px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-fav--circle {
-		border-radius: 30px;
-	}
-
-	.uni-fav-star {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		height: $fav-height;
-		line-height: 24px;
-		margin-right: 3px;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-fav-text {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		height: $fav-height;
-		line-height: $fav-height;
-		align-items: center;
-		justify-content: center;
-		font-size: 12px;
-	}
-</style>

+ 0 - 224
node_modules/@dcloudio/uni-ui/lib/uni-file-picker/choose-and-upload-file.js

@@ -1,224 +0,0 @@
-'use strict';
-
-const ERR_MSG_OK = 'chooseAndUploadFile:ok';
-const ERR_MSG_FAIL = 'chooseAndUploadFile:fail';
-
-function chooseImage(opts) {
-	const {
-		count,
-		sizeType = ['original', 'compressed'],
-		sourceType,
-		extension
-	} = opts
-	return new Promise((resolve, reject) => {
-		uni.chooseImage({
-			count,
-			sizeType,
-			sourceType,
-			extension,
-			success(res) {
-				resolve(normalizeChooseAndUploadFileRes(res, 'image'));
-			},
-			fail(res) {
-				reject({
-					errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL),
-				});
-			},
-		});
-	});
-}
-
-function chooseVideo(opts) {
-	const {
-		camera,
-		compressed,
-		maxDuration,
-		sourceType,
-		extension
-	} = opts;
-	return new Promise((resolve, reject) => {
-		uni.chooseVideo({
-			camera,
-			compressed,
-			maxDuration,
-			sourceType,
-			extension,
-			success(res) {
-				const {
-					tempFilePath,
-					duration,
-					size,
-					height,
-					width
-				} = res;
-				resolve(normalizeChooseAndUploadFileRes({
-					errMsg: 'chooseVideo:ok',
-					tempFilePaths: [tempFilePath],
-					tempFiles: [
-					{
-						name: (res.tempFile && res.tempFile.name) || '',
-						path: tempFilePath,
-						size,
-						type: (res.tempFile && res.tempFile.type) || '',
-						width,
-						height,
-						duration,
-						fileType: 'video',
-						cloudPath: '',
-					}, ],
-				}, 'video'));
-			},
-			fail(res) {
-				reject({
-					errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL),
-				});
-			},
-		});
-	});
-}
-
-function chooseAll(opts) {
-	const {
-		count,
-		extension
-	} = opts;
-	return new Promise((resolve, reject) => {
-		let chooseFile = uni.chooseFile;
-		if (typeof wx !== 'undefined' &&
-			typeof wx.chooseMessageFile === 'function') {
-			chooseFile = wx.chooseMessageFile;
-		}
-		if (typeof chooseFile !== 'function') {
-			return reject({
-				errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。',
-			});
-		}
-		chooseFile({
-			type: 'all',
-			count,
-			extension,
-			success(res) {
-				resolve(normalizeChooseAndUploadFileRes(res));
-			},
-			fail(res) {
-				reject({
-					errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL),
-				});
-			},
-		});
-	});
-}
-
-function normalizeChooseAndUploadFileRes(res, fileType) {
-	res.tempFiles.forEach((item, index) => {
-		if (!item.name) {
-			item.name = item.path.substring(item.path.lastIndexOf('/') + 1);
-		}
-		if (fileType) {
-			item.fileType = fileType;
-		}
-		item.cloudPath =
-			Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.'));
-	});
-	if (!res.tempFilePaths) {
-		res.tempFilePaths = res.tempFiles.map((file) => file.path);
-	}
-	return res;
-}
-
-function uploadCloudFiles(files, max = 5, onUploadProgress) {
-	files = JSON.parse(JSON.stringify(files))
-	const len = files.length
-	let count = 0
-	let self = this
-	return new Promise(resolve => {
-		while (count < max) {
-			next()
-		}
-
-		function next() {
-			let cur = count++
-			if (cur >= len) {
-				!files.find(item => !item.url && !item.errMsg) && resolve(files)
-				return
-			}
-			const fileItem = files[cur]
-			const index = self.files.findIndex(v => v.uuid === fileItem.uuid)
-			fileItem.url = ''
-			delete fileItem.errMsg
-
-			uniCloud
-				.uploadFile({
-					filePath: fileItem.path,
-					cloudPath: fileItem.cloudPath,
-					fileType: fileItem.fileType,
-					onUploadProgress: res => {
-						res.index = index
-						onUploadProgress && onUploadProgress(res)
-					}
-				})
-				.then(res => {
-					fileItem.url = res.fileID
-					fileItem.index = index
-					if (cur < len) {
-						next()
-					}
-				})
-				.catch(res => {
-					fileItem.errMsg = res.errMsg || res.message
-					fileItem.index = index
-					if (cur < len) {
-						next()
-					}
-				})
-		}
-	})
-}
-
-
-
-
-
-function uploadFiles(choosePromise, {
-	onChooseFile,
-	onUploadProgress
-}) {
-	return choosePromise
-		.then((res) => {
-			if (onChooseFile) {
-				const customChooseRes = onChooseFile(res);
-				if (typeof customChooseRes !== 'undefined') {
-					return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ?
-						res : chooseRes);
-				}
-			}
-			return res;
-		})
-		.then((res) => {
-			if (res === false) {
-				return {
-					errMsg: ERR_MSG_OK,
-					tempFilePaths: [],
-					tempFiles: [],
-				};
-			}
-			return res
-		})
-}
-
-function chooseAndUploadFile(opts = {
-	type: 'all'
-}) {
-	if (opts.type === 'image') {
-		return uploadFiles(chooseImage(opts), opts);
-	}
-	else if (opts.type === 'video') {
-		return uploadFiles(chooseVideo(opts), opts);
-	}
-	return uploadFiles(chooseAll(opts), opts);
-}
-
-export {
-	chooseAndUploadFile,
-	uploadCloudFiles
-};

+ 0 - 667
node_modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.vue

@@ -1,667 +0,0 @@
-<template>
-	<view class="uni-file-picker">
-		<view v-if="title" class="uni-file-picker__header">
-			<text class="file-title">{{ title }}</text>
-			<text class="file-count">{{ filesList.length }}/{{ limitLength }}</text>
-		</view>
-		<upload-image v-if="fileMediatype === 'image' && showType === 'grid'" :readonly="readonly"
-			:image-styles="imageStyles" :files-list="filesList" :limit="limitLength" :disablePreview="disablePreview"
-			:delIcon="delIcon" @uploadFiles="uploadFiles" @choose="choose" @delFile="delFile">
-			<slot>
-				<view class="is-add">
-					<view class="icon-add"></view>
-					<view class="icon-add rotate"></view>
-				</view>
-			</slot>
-		</upload-image>
-		<upload-file v-if="fileMediatype !== 'image' || showType !== 'grid'" :readonly="readonly"
-			:list-styles="listStyles" :files-list="filesList" :showType="showType" :delIcon="delIcon"
-			@uploadFiles="uploadFiles" @choose="choose" @delFile="delFile">
-			<slot><button type="primary" size="mini">选择文件</button></slot>
-		</upload-file>
-	</view>
-</template>
-
-<script>
-	import {
-		chooseAndUploadFile,
-		uploadCloudFiles
-	} from './choose-and-upload-file.js'
-	import {
-		get_file_ext,
-		get_extname,
-		get_files_and_is_max,
-		get_file_info,
-		get_file_data
-	} from './utils.js'
-	import uploadImage from './upload-image.vue'
-	import uploadFile from './upload-file.vue'
-	let fileInput = null
-	/**
-	 * FilePicker 文件选择上传
-	 * @description 文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=4079
-	 * @property {Object|Array}	value	组件数据,通常用来回显 ,类型由return-type属性决定
-	 * @property {Boolean}	disabled = [true|false]	组件禁用
-	 * 	@value true 	禁用
-	 * 	@value false 	取消禁用
-	 * @property {Boolean}	readonly = [true|false]	组件只读,不可选择,不显示进度,不显示删除按钮
-	 * 	@value true 	只读
-	 * 	@value false 	取消只读
-	 * @property {String}	return-type = [array|object]	限制 value 格式,当为 object 时 ,组件只能单选,且会覆盖
-	 * 	@value array	规定 value 属性的类型为数组
-	 * 	@value object	规定 value 属性的类型为对象
-	 * @property {Boolean}	disable-preview = [true|false]	禁用图片预览,仅 mode:grid 时生效
-	 * 	@value true 	禁用图片预览
-	 * 	@value false 	取消禁用图片预览
-	 * @property {Boolean}	del-icon = [true|false]	是否显示删除按钮
-	 * 	@value true 	显示删除按钮
-	 * 	@value false 	不显示删除按钮
-	 * @property {Boolean}	auto-upload = [true|false]	是否自动上传,值为true则只触发@select,可自行上传
-	 * 	@value true 	自动上传
-	 * 	@value false 	取消自动上传
-	 * @property {Number|String}	limit	最大选择个数 ,h5 会自动忽略多选的部分
-	 * @property {String}	title	组件标题,右侧显示上传计数
-	 * @property {String}	mode = [list|grid]	选择文件后的文件列表样式
-	 * 	@value list 	列表显示
-	 * 	@value grid 	宫格显示
-	 * @property {String}	file-mediatype = [image|video|all]	选择文件类型
-	 * 	@value image	只选择图片
-	 * 	@value video	只选择视频
-	 * 	@value all		选择所有文件
-	 * @property {Array}	file-extname	选择文件后缀,根据 file-mediatype 属性而不同
-	 * @property {Object}	list-style	mode:list 时的样式
-	 * @property {Object}	image-styles	选择文件后缀,根据 file-mediatype 属性而不同
-	 * @event {Function} select 	选择文件后触发
-	 * @event {Function} progress 文件上传时触发
-	 * @event {Function} success 	上传成功触发
-	 * @event {Function} fail 		上传失败触发
-	 * @event {Function} delete 	文件从列表移除时触发
-	 */
-	export default {
-		name: 'uniFilePicker',
-		components: {
-			uploadImage,
-			uploadFile
-		},
-		options: {
-			virtualHost: true
-		},
-		emits: ['select', 'success', 'fail', 'progress', 'delete', 'update:modelValue', 'input'],
-		props: {
-			// #ifdef VUE3
-			modelValue: {
-				type: [Array, Object],
-				default () {
-					return []
-				}
-			},
-			// #endif
-
-			// #ifndef VUE3
-			value: {
-				type: [Array, Object],
-				default () {
-					return []
-				}
-			},
-			// #endif
-
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			disablePreview: {
-				type: Boolean,
-				default: false
-			},
-			delIcon: {
-				type: Boolean,
-				default: true
-			},
-			// 自动上传
-			autoUpload: {
-				type: Boolean,
-				default: true
-			},
-			// 最大选择个数 ,h5只能限制单选或是多选
-			limit: {
-				type: [Number, String],
-				default: 9
-			},
-			// 列表样式 grid | list | list-card
-			mode: {
-				type: String,
-				default: 'grid'
-			},
-			// 选择文件类型  image/video/all
-			fileMediatype: {
-				type: String,
-				default: 'image'
-			},
-			// 文件类型筛选
-			fileExtname: {
-				type: [Array, String],
-				default () {
-					return []
-				}
-			},
-			title: {
-				type: String,
-				default: ''
-			},
-			listStyles: {
-				type: Object,
-				default () {
-					return {
-						// 是否显示边框
-						border: true,
-						// 是否显示分隔线
-						dividline: true,
-						// 线条样式
-						borderStyle: {}
-					}
-				}
-			},
-			imageStyles: {
-				type: Object,
-				default () {
-					return {
-						width: 'auto',
-						height: 'auto'
-					}
-				}
-			},
-			readonly: {
-				type: Boolean,
-				default: false
-			},
-			returnType: {
-				type: String,
-				default: 'array'
-			},
-			sizeType: {
-				type: Array,
-				default () {
-					return ['original', 'compressed']
-				}
-			},
-			sourceType: {
-				type: Array,
-				default () {
-					return  ['album', 'camera']
-				}
-			}
-		},
-		data() {
-			return {
-				files: [],
-				localValue: []
-			}
-		},
-		watch: {
-			// #ifndef VUE3
-			value: {
-				handler(newVal, oldVal) {
-					this.setValue(newVal, oldVal)
-				},
-				immediate: true
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				handler(newVal, oldVal) {
-					this.setValue(newVal, oldVal)
-				},
-				immediate: true
-			},
-			// #endif
-		},
-		computed: {
-			filesList() {
-				let files = []
-				this.files.forEach(v => {
-					files.push(v)
-				})
-				return files
-			},
-			showType() {
-				if (this.fileMediatype === 'image') {
-					return this.mode
-				}
-				return 'list'
-			},
-			limitLength() {
-				if (this.returnType === 'object') {
-					return 1
-				}
-				if (!this.limit) {
-					return 1
-				}
-				if (this.limit >= 9) {
-					return 9
-				}
-				return this.limit
-			}
-		},
-		created() {
-			// TODO 兼容不开通服务空间的情况
-			if (!(uniCloud.config && uniCloud.config.provider)) {
-				this.noSpace = true
-				uniCloud.chooseAndUploadFile = chooseAndUploadFile
-			}
-			this.form = this.getForm('uniForms')
-			this.formItem = this.getForm('uniFormsItem')
-			if (this.form && this.formItem) {
-				if (this.formItem.name) {
-					this.rename = this.formItem.name
-					this.form.inputChildrens.push(this)
-				}
-			}
-		},
-		methods: {
-			/**
-			 * 公开用户使用,清空文件
-			 * @param {Object} index
-			 */
-			clearFiles(index) {
-				if (index !== 0 && !index) {
-					this.files = []
-					this.$nextTick(() => {
-						this.setEmit()
-					})
-				} else {
-					this.files.splice(index, 1)
-				}
-				this.$nextTick(() => {
-					this.setEmit()
-				})
-			},
-			/**
-			 * 公开用户使用,继续上传
-			 */
-			upload() {
-				let files = []
-				this.files.forEach((v, index) => {
-					if (v.status === 'ready' || v.status === 'error') {
-						files.push(Object.assign({}, v))
-					}
-				})
-				return this.uploadFiles(files)
-			},
-			async setValue(newVal, oldVal) {
-				const newData =  async (v) => {
-					const reg = /cloud:\/\/([\w.]+\/?)\S*/
-					let url = ''
-					if(v.fileID){
-						url = v.fileID
-					}else{
-						url = v.url
-					}
-					if (reg.test(url)) {
-						v.fileID = url
-						v.url = await this.getTempFileURL(url)
-					}
-					if(v.url) v.path = v.url
-					return v
-				}
-				if (this.returnType === 'object') {
-					if (newVal) {
-						await newData(newVal)
-					} else {
-						newVal = {}
-					}
-				} else {
-					if (!newVal) newVal = []
-					for(let i =0 ;i < newVal.length ;i++){
-						let v = newVal[i]
-						await newData(v)
-					}
-				}
-				this.localValue = newVal
-				if (this.form && this.formItem &&!this.is_reset) {
-					this.is_reset = false
-					this.formItem.setValue(this.localValue)
-				}
-				let filesData = Object.keys(newVal).length > 0 ? newVal : [];
-				this.files = [].concat(filesData)
-			},
-
-			/**
-			 * 选择文件
-			 */
-			choose() {
-
-				if (this.disabled) return
-				if (this.files.length >= Number(this.limitLength) && this.showType !== 'grid' && this.returnType ===
-					'array') {
-					uni.showToast({
-						title: `您最多选择 ${this.limitLength} 个文件`,
-						icon: 'none'
-					})
-					return
-				}
-				this.chooseFiles()
-			},
-
-			/**
-			 * 选择文件并上传
-			 */
-			chooseFiles() {
-				const _extname = get_extname(this.fileExtname)
-				// 获取后缀
-				uniCloud
-					.chooseAndUploadFile({
-						type: this.fileMediatype,
-						compressed: false,
-						sizeType: this.sizeType,
-						sourceType: this.sourceType,
-						// TODO 如果为空,video 有问题
-						extension: _extname.length > 0 ? _extname : undefined,
-						count: this.limitLength - this.files.length, //默认9
-						onChooseFile: this.chooseFileCallback,
-						onUploadProgress: progressEvent => {
-							this.setProgress(progressEvent, progressEvent.index)
-						}
-					})
-					.then(result => {
-						this.setSuccessAndError(result.tempFiles)
-					})
-					.catch(err => {
-						console.log('选择失败', err)
-					})
-			},
-
-			/**
-			 * 选择文件回调
-			 * @param {Object} res
-			 */
-			async chooseFileCallback(res) {
-				const _extname = get_extname(this.fileExtname)
-				const is_one = (Number(this.limitLength) === 1 &&
-						this.disablePreview &&
-						!this.disabled) ||
-					this.returnType === 'object'
-				// 如果这有一个文件 ,需要清空本地缓存数据
-				if (is_one) {
-					this.files = []
-				}
-
-				let {
-					filePaths,
-					files
-				} = get_files_and_is_max(res, _extname)
-				if (!(_extname && _extname.length > 0)) {
-					filePaths = res.tempFilePaths
-					files = res.tempFiles
-				}
-
-				let currentData = []
-				for (let i = 0; i < files.length; i++) {
-					if (this.limitLength - this.files.length <= 0) break
-					files[i].uuid = Date.now()
-					let filedata = await get_file_data(files[i], this.fileMediatype)
-					filedata.progress = 0
-					filedata.status = 'ready'
-					this.files.push(filedata)
-					currentData.push({
-						...filedata,
-						file: files[i]
-					})
-				}
-				this.$emit('select', {
-					tempFiles: currentData,
-					tempFilePaths: filePaths
-				})
-				res.tempFiles = files
-				// 停止自动上传
-				if (!this.autoUpload || this.noSpace) {
-					res.tempFiles = []
-				}
-			},
-
-			/**
-			 * 批传
-			 * @param {Object} e
-			 */
-			uploadFiles(files) {
-				files = [].concat(files)
-				return uploadCloudFiles.call(this, files, 5, res => {
-						this.setProgress(res, res.index, true)
-					})
-					.then(result => {
-						this.setSuccessAndError(result)
-						return result;
-					})
-					.catch(err => {
-						console.log(err)
-					})
-			},
-
-			/**
-			 * 成功或失败
-			 */
-			async setSuccessAndError(res, fn) {
-				let successData = []
-				let errorData = []
-				let tempFilePath = []
-				let errorTempFilePath = []
-				for (let i = 0; i < res.length; i++) {
-					const item = res[i]
-					const index = item.uuid ? this.files.findIndex(p => p.uuid === item.uuid) : item.index
-
-					if (index === -1 || !this.files) break
-					if (item.errMsg === 'request:fail') {
-						this.files[index].url = item.path
-						this.files[index].status = 'error'
-						this.files[index].errMsg = item.errMsg
-						// this.files[index].progress = -1
-						errorData.push(this.files[index])
-						errorTempFilePath.push(this.files[index].url)
-					} else {
-						this.files[index].errMsg = ''
-						this.files[index].fileID = item.url
-						const reg = /cloud:\/\/([\w.]+\/?)\S*/
-						if (reg.test(item.url)) {
-							this.files[index].url = await this.getTempFileURL(item.url)
-						}else{
-							this.files[index].url = item.url
-						}
-
-						this.files[index].status = 'success'
-						this.files[index].progress += 1
-						successData.push(this.files[index])
-						tempFilePath.push(this.files[index].fileID)
-					}
-				}
-
-				if (successData.length > 0) {
-					this.setEmit()
-					// 状态改变返回
-					this.$emit('success', {
-						tempFiles: this.backObject(successData),
-						tempFilePaths: tempFilePath
-					})
-				}
-
-				if (errorData.length > 0) {
-					this.$emit('fail', {
-						tempFiles: this.backObject(errorData),
-						tempFilePaths: errorTempFilePath
-					})
-				}
-			},
-
-			/**
-			 * 获取进度
-			 * @param {Object} progressEvent
-			 * @param {Object} index
-			 * @param {Object} type
-			 */
-			setProgress(progressEvent, index, type) {
-				const fileLenth = this.files.length
-				const percentNum = (index / fileLenth) * 100
-				const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
-				let idx = index
-				if (!type) {
-					idx = this.files.findIndex(p => p.uuid === progressEvent.tempFile.uuid)
-				}
-				if (idx === -1 || !this.files[idx]) return
-				// fix by mehaotian 100 就会消失,-1 是为了让进度条消失
-				this.files[idx].progress = percentCompleted - 1
-				// 上传中
-				this.$emit('progress', {
-					index: idx,
-					progress: parseInt(percentCompleted),
-					tempFile: this.files[idx]
-				})
-			},
-
-			/**
-			 * 删除文件
-			 * @param {Object} index
-			 */
-			delFile(index) {
-				this.$emit('delete', {
-					tempFile: this.files[index],
-					tempFilePath: this.files[index].url
-				})
-				this.files.splice(index, 1)
-				this.$nextTick(() => {
-					this.setEmit()
-				})
-			},
-
-			/**
-			 * 获取文件名和后缀
-			 * @param {Object} name
-			 */
-			getFileExt(name) {
-				const last_len = name.lastIndexOf('.')
-				const len = name.length
-				return {
-					name: name.substring(0, last_len),
-					ext: name.substring(last_len + 1, len)
-				}
-			},
-
-			/**
-			 * 处理返回事件
-			 */
-			setEmit() {
-				let data = []
-				if (this.returnType === 'object') {
-					data = this.backObject(this.files)[0]
-					this.localValue = data?data:null
-				} else {
-					data = this.backObject(this.files)
-					if (!this.localValue) {
-						this.localValue = []
-					}
-					this.localValue = [...data]
-				}
-				// #ifdef VUE3
-				this.$emit('update:modelValue', this.localValue)
-				// #endif
-				// #ifndef VUE3
-				this.$emit('input', this.localValue)
-				// #endif
-			},
-
-			/**
-			 * 处理返回参数
-			 * @param {Object} files
-			 */
-			backObject(files) {
-				let newFilesData = []
-				files.forEach(v => {
-					newFilesData.push({
-						extname: v.extname,
-						fileType: v.fileType,
-						image: v.image,
-						name: v.name,
-						path: v.path,
-						size: v.size,
-						fileID:v.fileID,
-						url: v.url,
-						// 修改删除一个文件后不能再上传的bug, #694
-            uuid: v.uuid,
-            status: v.status,
-            cloudPath: v.cloudPath
-					})
-				})
-				return newFilesData
-			},
-			async getTempFileURL(fileList) {
-				fileList = {
-					fileList: [].concat(fileList)
-				}
-				const urls = await uniCloud.getTempFileURL(fileList)
-				return urls.fileList[0].tempFileURL || ''
-			},
-			/**
-			 * 获取父元素实例
-			 */
-			getForm(name = 'uniForms') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false;
-					parentName = parent.$options.name;
-				}
-				return parent;
-			}
-		}
-	}
-</script>
-
-<style>
-	.uni-file-picker {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		overflow: hidden;
-		width: 100%;
-		/* #endif */
-		flex: 1;
-	}
-
-	.uni-file-picker__header {
-		padding-top: 5px;
-		padding-bottom: 10px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: space-between;
-	}
-
-	.file-title {
-		font-size: 14px;
-		color: #333;
-	}
-
-	.file-count {
-		font-size: 14px;
-		color: #999;
-	}
-
-	.is-add {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		justify-content: center;
-	}
-
-	.icon-add {
-		width: 50px;
-		height: 5px;
-		background-color: #f1f1f1;
-		border-radius: 2px;
-	}
-
-	.rotate {
-		position: absolute;
-		transform: rotate(90deg);
-	}
-</style>

+ 0 - 325
node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-file.vue

@@ -1,325 +0,0 @@
-<template>
-	<view class="uni-file-picker__files">
-		<view v-if="!readonly" class="files-button" @click="choose">
-			<slot></slot>
-		</view>
-		<!-- :class="{'is-text-box':showType === 'list'}" -->
-		<view v-if="list.length > 0" class="uni-file-picker__lists is-text-box" :style="borderStyle">
-			<!-- ,'is-list-card':showType === 'list-card' -->
-
-			<view class="uni-file-picker__lists-box" v-for="(item ,index) in list" :key="index" :class="{
-				'files-border':index !== 0 && styles.dividline}"
-			 :style="index !== 0 && styles.dividline &&borderLineStyle">
-				<view class="uni-file-picker__item">
-					<!-- :class="{'is-text-image':showType === 'list'}" -->
-					<!-- 	<view class="files__image is-text-image">
-						<image class="header-image" :src="item.logo" mode="aspectFit"></image>
-					</view> -->
-					<view class="files__name">{{item.name}}</view>
-					<view v-if="delIcon&&!readonly" class="icon-del-box icon-files" @click="delFile(index)">
-						<view class="icon-del icon-files"></view>
-						<view class="icon-del rotate"></view>
-					</view>
-				</view>
-				<view v-if="(item.progress && item.progress !== 100) ||item.progress===0 " class="file-picker__progress">
-					<progress class="file-picker__progress-item" :percent="item.progress === -1?0:item.progress" stroke-width="4"
-					 :backgroundColor="item.errMsg?'#ff5a5f':'#EBEBEB'" />
-				</view>
-				<view v-if="item.status === 'error'" class="file-picker__mask" @click.stop="uploadFiles(item,index)">
-					点击重试
-				</view>
-			</view>
-
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "uploadFile",
-		emits:['uploadFiles','choose','delFile'],
-		props: {
-			filesList: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			delIcon: {
-				type: Boolean,
-				default: true
-			},
-			limit: {
-				type: [Number, String],
-				default: 9
-			},
-			showType: {
-				type: String,
-				default: ''
-			},
-			listStyles: {
-				type: Object,
-				default () {
-					return {
-						// 是否显示边框
-						border: true,
-						// 是否显示分隔线
-						dividline: true,
-						// 线条样式
-						borderStyle: {}
-					}
-				}
-			},
-			readonly:{
-				type:Boolean,
-				default:false
-			}
-		},
-		computed: {
-			list() {
-				let files = []
-				this.filesList.forEach(v => {
-					files.push(v)
-				})
-				return files
-			},
-			styles() {
-				let styles = {
-					border: true,
-					dividline: true,
-					'border-style': {}
-				}
-				return Object.assign(styles, this.listStyles)
-			},
-			borderStyle() {
-				let {
-					borderStyle,
-					border
-				} = this.styles
-				let obj = {}
-				if (!border) {
-					obj.border = 'none'
-				} else {
-					let width = (borderStyle && borderStyle.width) || 1
-					width = this.value2px(width)
-					let radius = (borderStyle && borderStyle.radius) || 5
-					radius = this.value2px(radius)
-					obj = {
-						'border-width': width,
-						'border-style': (borderStyle && borderStyle.style) || 'solid',
-						'border-color': (borderStyle && borderStyle.color) || '#eee',
-						'border-radius': radius
-					}
-				}
-				let classles = ''
-				for (let i in obj) {
-					classles += `${i}:${obj[i]};`
-				}
-				return classles
-			},
-			borderLineStyle() {
-				let obj = {}
-				let {
-					borderStyle
-				} = this.styles
-				if (borderStyle && borderStyle.color) {
-					obj['border-color'] = borderStyle.color
-				}
-				if (borderStyle && borderStyle.width) {
-					let width = borderStyle && borderStyle.width || 1
-					let style = borderStyle && borderStyle.style || 0
-					if (typeof width === 'number') {
-						width += 'px'
-					} else {
-						width = width.indexOf('px') ? width : width + 'px'
-					}
-					obj['border-width'] = width
-
-					if (typeof style === 'number') {
-						style += 'px'
-					} else {
-						style = style.indexOf('px') ? style : style + 'px'
-					}
-					obj['border-top-style'] = style
-				}
-				let classles = ''
-				for (let i in obj) {
-					classles += `${i}:${obj[i]};`
-				}
-				return classles
-			}
-		},
-
-		methods: {
-			uploadFiles(item, index) {
-				this.$emit("uploadFiles", {
-					item,
-					index
-				})
-			},
-			choose() {
-				this.$emit("choose")
-			},
-			delFile(index) {
-				this.$emit('delFile', index)
-			},
-			value2px(value) {
-				if (typeof value === 'number') {
-					value += 'px'
-				} else {
-					value = value.indexOf('px') !== -1 ? value : value + 'px'
-				}
-				return value
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-file-picker__files {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: flex-start;
-	}
-
-	.files-button {
-		// border: 1px red solid;
-	}
-
-	.uni-file-picker__lists {
-		position: relative;
-		margin-top: 5px;
-		overflow: hidden;
-	}
-
-	.file-picker__mask {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		right: 0;
-		top: 0;
-		bottom: 0;
-		left: 0;
-		color: #fff;
-		font-size: 14px;
-		background-color: rgba(0, 0, 0, 0.4);
-	}
-
-	.uni-file-picker__lists-box {
-		position: relative;
-	}
-
-	.uni-file-picker__item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		padding: 8px 10px;
-		padding-right: 5px;
-		padding-left: 10px;
-	}
-
-	.files-border {
-		border-top: 1px #eee solid;
-	}
-
-	.files__name {
-		flex: 1;
-		font-size: 14px;
-		color: #666;
-		margin-right: 25px;
-		/* #ifndef APP-NVUE */
-		word-break: break-all;
-		word-wrap: break-word;
-		/* #endif */
-	}
-
-	.icon-files {
-		/* #ifndef APP-NVUE */
-		position: static;
-		background-color: initial;
-		/* #endif */
-	}
-
-	// .icon-files .icon-del {
-	// 	background-color: #333;
-	// 	width: 12px;
-	// 	height: 1px;
-	// }
-
-
-	.is-list-card {
-		border: 1px #eee solid;
-		margin-bottom: 5px;
-		border-radius: 5px;
-		box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.1);
-		padding: 5px;
-	}
-
-	.files__image {
-		width: 40px;
-		height: 40px;
-		margin-right: 10px;
-	}
-
-	.header-image {
-		width: 100%;
-		height: 100%;
-	}
-
-	.is-text-box {
-		border: 1px #eee solid;
-		border-radius: 5px;
-	}
-
-	.is-text-image {
-		width: 25px;
-		height: 25px;
-		margin-left: 5px;
-	}
-
-	.rotate {
-		position: absolute;
-		transform: rotate(90deg);
-	}
-
-	.icon-del-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		margin: auto 0;
-		/* #endif */
-		align-items: center;
-		justify-content: center;
-		position: absolute;
-		top: 0px;
-		bottom: 0;
-		right: 5px;
-		height: 26px;
-		width: 26px;
-		// border-radius: 50%;
-		// background-color: rgba(0, 0, 0, 0.5);
-		z-index: 2;
-		transform: rotate(-45deg);
-	}
-
-	.icon-del {
-		width: 15px;
-		height: 1px;
-		background-color: #333;
-		// border-radius: 1px;
-	}
-
-	/* #ifdef H5 */
-	@media all and (min-width: 768px) {
-		.uni-file-picker__files {
-			max-width: 375px;
-		}
-	}
-
-	/* #endif */
-</style>

+ 0 - 292
node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-image.vue

@@ -1,292 +0,0 @@
-<template>
-	<view class="uni-file-picker__container">
-		<view class="file-picker__box" v-for="(item,index) in filesList" :key="index" :style="boxStyle">
-			<view class="file-picker__box-content" :style="borderStyle">
-				<image class="file-image" :src="item.url" mode="aspectFill" @click.stop="prviewImage(item,index)"></image>
-				<view v-if="delIcon && !readonly" class="icon-del-box" @click.stop="delFile(index)">
-					<view class="icon-del"></view>
-					<view class="icon-del rotate"></view>
-				</view>
-				<view v-if="(item.progress && item.progress !== 100) ||item.progress===0 " class="file-picker__progress">
-					<progress class="file-picker__progress-item" :percent="item.progress === -1?0:item.progress" stroke-width="4"
-					 :backgroundColor="item.errMsg?'#ff5a5f':'#EBEBEB'" />
-				</view>
-				<view v-if="item.errMsg" class="file-picker__mask" @click.stop="uploadFiles(item,index)">
-					点击重试
-				</view>
-			</view>
-		</view>
-		<view v-if="filesList.length < limit && !readonly" class="file-picker__box" :style="boxStyle">
-			<view class="file-picker__box-content is-add" :style="borderStyle" @click="choose">
-				<slot>
-					<view class="icon-add"></view>
-					<view class="icon-add rotate"></view>
-				</slot>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "uploadImage",
-		emits:['uploadFiles','choose','delFile'],
-		props: {
-			filesList: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			disabled:{
-				type: Boolean,
-				default: false
-			},
-			disablePreview: {
-				type: Boolean,
-				default: false
-			},
-			limit: {
-				type: [Number, String],
-				default: 9
-			},
-			imageStyles: {
-				type: Object,
-				default () {
-					return {
-						width: 'auto',
-						height: 'auto',
-						border: {}
-					}
-				}
-			},
-			delIcon: {
-				type: Boolean,
-				default: true
-			},
-			readonly:{
-				type:Boolean,
-				default:false
-			}
-		},
-		computed: {
-			styles() {
-				let styles = {
-					width: 'auto',
-					height: 'auto',
-					border: {}
-				}
-				return Object.assign(styles, this.imageStyles)
-			},
-			boxStyle() {
-				const {
-					width = 'auto',
-						height = 'auto'
-				} = this.styles
-				let obj = {}
-				if (height === 'auto') {
-					if (width !== 'auto') {
-						obj.height = this.value2px(width)
-						obj['padding-top'] = 0
-					} else {
-						obj.height = 0
-					}
-				} else {
-					obj.height = this.value2px(height)
-					obj['padding-top'] = 0
-				}
-
-				if (width === 'auto') {
-					if (height !== 'auto') {
-						obj.width = this.value2px(height)
-					} else {
-						obj.width = '33.3%'
-					}
-				} else {
-					obj.width = this.value2px(width)
-				}
-
-				let classles = ''
-				for(let i in obj){
-					classles+= `${i}:${obj[i]};`
-				}
-				return classles
-			},
-			borderStyle() {
-				let {
-					border
-				} = this.styles
-				let obj = {}
-				const widthDefaultValue = 1
-				const radiusDefaultValue = 3
-				if (typeof border === 'boolean') {
-					obj.border = border ? '1px #eee solid' : 'none'
-				} else {
-					let width = (border && border.width) || widthDefaultValue
-					width = this.value2px(width)
-					let radius = (border && border.radius) || radiusDefaultValue
-					radius = this.value2px(radius)
-					obj = {
-						'border-width': width,
-						'border-style': (border && border.style) || 'solid',
-						'border-color': (border && border.color) || '#eee',
-						'border-radius': radius
-					}
-				}
-				let classles = ''
-				for(let i in obj){
-					classles+= `${i}:${obj[i]};`
-				}
-				return classles
-			}
-		},
-		methods: {
-			uploadFiles(item, index) {
-				this.$emit("uploadFiles", item)
-			},
-			choose() {
-				this.$emit("choose")
-			},
-			delFile(index) {
-				this.$emit('delFile', index)
-			},
-			prviewImage(img, index) {
-				let urls = []
-				if(Number(this.limit) === 1&&this.disablePreview&&!this.disabled){
-					this.$emit("choose")
-				}
-				if(this.disablePreview) return
-				this.filesList.forEach(i => {
-					urls.push(i.url)
-				})
-
-				uni.previewImage({
-					urls: urls,
-					current: index
-				});
-			},
-			value2px(value) {
-				if (typeof value === 'number') {
-					value += 'px'
-				} else {
-					if (value.indexOf('%') === -1) {
-						value = value.indexOf('px') !== -1 ? value : value + 'px'
-					}
-				}
-				return value
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-file-picker__container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		box-sizing: border-box;
-		/* #endif */
-		flex-wrap: wrap;
-		margin: -5px;
-	}
-
-	.file-picker__box {
-		position: relative;
-		// flex: 0 0 33.3%;
-		width: 33.3%;
-		height: 0;
-		padding-top: 33.33%;
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		/* #endif */
-	}
-
-	.file-picker__box-content {
-		position: absolute;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		left: 0;
-		margin: 5px;
-		border: 1px #eee solid;
-		border-radius: 5px;
-		overflow: hidden;
-	}
-
-	.file-picker__progress {
-		position: absolute;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		/* border: 1px red solid; */
-		z-index: 2;
-	}
-
-	.file-picker__progress-item {
-		width: 100%;
-	}
-
-	.file-picker__mask {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		right: 0;
-		top: 0;
-		bottom: 0;
-		left: 0;
-		color: #fff;
-		font-size: 12px;
-		background-color: rgba(0, 0, 0, 0.4);
-	}
-
-	.file-image {
-		width: 100%;
-		height: 100%;
-	}
-
-	.is-add {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		justify-content: center;
-	}
-
-	.icon-add {
-		width: 50px;
-		height: 5px;
-		background-color: #f1f1f1;
-		border-radius: 2px;
-	}
-
-	.rotate {
-		position: absolute;
-		transform: rotate(90deg);
-	}
-
-	.icon-del-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		justify-content: center;
-		position: absolute;
-		top: 3px;
-		right: 3px;
-		height: 26px;
-		width: 26px;
-		border-radius: 50%;
-		background-color: rgba(0, 0, 0, 0.5);
-		z-index: 2;
-		transform: rotate(-45deg);
-	}
-
-	.icon-del {
-		width: 15px;
-		height: 2px;
-		background-color: #fff;
-		border-radius: 2px;
-	}
-</style>

+ 0 - 109
node_modules/@dcloudio/uni-ui/lib/uni-file-picker/utils.js

@@ -1,109 +0,0 @@
-/**
- * 获取文件名和后缀
- * @param {String} name
- */
-export const get_file_ext = (name) => {
-	const last_len = name.lastIndexOf('.')
-	const len = name.length
-	return {
-		name: name.substring(0, last_len),
-		ext: name.substring(last_len + 1, len)
-	}
-}
-
-/**
- * 获取扩展名
- * @param {Array} fileExtname
- */
-export const get_extname = (fileExtname) => {
-	if (!Array.isArray(fileExtname)) {
-		let extname = fileExtname.replace(/(\[|\])/g, '')
-		return extname.split(',')
-	} else {
-		return fileExtname
-	}
-	return []
-}
-
-/**
- * 获取文件和检测是否可选
- */
-export const get_files_and_is_max = (res, _extname) => {
-	let filePaths = []
-	let files = []
-	if(!_extname || _extname.length === 0){
-		return {
-			filePaths,
-			files
-		}
-	}
-	res.tempFiles.forEach(v => {
-		let fileFullName = get_file_ext(v.name)
-		const extname = fileFullName.ext.toLowerCase()
-		if (_extname.indexOf(extname) !== -1) {
-			files.push(v)
-			filePaths.push(v.path)
-		}
-	})
-	if (files.length !== res.tempFiles.length) {
-		uni.showToast({
-			title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`,
-			icon: 'none',
-			duration: 5000
-		})
-	}
-
-	return {
-		filePaths,
-		files
-	}
-}
-
-
-/**
- * 获取图片信息
- * @param {Object} filepath
- */
-export const get_file_info = (filepath) => {
-	return new Promise((resolve, reject) => {
-		uni.getImageInfo({
-			src: filepath,
-			success(res) {
-				resolve(res)
-			},
-			fail(err) {
-				reject(err)
-			}
-		})
-	})
-}
-/**
- * 获取封装数据
- */
-export const get_file_data = async (files, type = 'image') => {
-	// 最终需要上传数据库的数据
-	let fileFullName = get_file_ext(files.name)
-	const extname = fileFullName.ext.toLowerCase()
-	let filedata = {
-		name: files.name,
-		uuid: files.uuid,
-		extname: extname || '',
-		cloudPath: files.cloudPath,
-		fileType: files.fileType,
-		url: files.path || files.path,
-		size: files.size, //单位是字节
-		image: {},
-		path: files.path,
-		video: {}
-	}
-	if (type === 'image') {
-		const imageinfo = await get_file_info(files.path)
-		delete filedata.video
-		filedata.image.width = imageinfo.width
-		filedata.image.height = imageinfo.height
-		filedata.image.location = imageinfo.path
-	} else {
-		delete filedata.image
-	}
-	return filedata
-}

+ 0 - 627
node_modules/@dcloudio/uni-ui/lib/uni-forms-item/uni-forms-item.vue

@@ -1,627 +0,0 @@
-<template>
-	<view class="uni-forms-item"
-		:class="['is-direction-' + localLabelPos ,border?'uni-forms-item--border':'' ,border && isFirstBorder?'is-first-border':'']">
-		<slot name="label">
-			<view class="uni-forms-item__label" :class="{'no-label':!label && !required}"
-				:style="{width:localLabelWidth,justifyContent: localLabelAlign}">
-				<text v-if="required" class="is-required">*</text>
-				<text>{{label}}</text>
-			</view>
-		</slot>
-		<!-- #ifndef APP-NVUE -->
-		<view class="uni-forms-item__content">
-			<slot></slot>
-			<view class="uni-forms-item__error" :class="{'msg--active':msg}">
-				<text>{{msg}}</text>
-			</view>
-		</view>
-		<!-- #endif -->
-		<!-- #ifdef APP-NVUE -->
-		<view class="uni-forms-item__nuve-content">
-			<view class="uni-forms-item__content">
-				<slot></slot>
-			</view>
-			<view class="uni-forms-item__error" :class="{'msg--active':msg}">
-				<text class="error-text">{{msg}}</text>
-			</view>
-		</view>
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	/**
-	 * uni-fomrs-item 表单子组件
-	 * @description uni-fomrs-item 表单子组件,提供了基础布局已经校验能力
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=2773
-	 * @property {Boolean} required 是否必填,左边显示红色"*"号
-	 * @property {String } 	label 				输入框左边的文字提示
-	 * @property {Number } 	labelWidth 			label的宽度,单位px(默认65)
-	 * @property {String } 	labelAlign = [left|center|right] label的文字对齐方式(默认left)
-	 * 	@value left		label 左侧显示
-	 * 	@value center	label 居中
-	 * 	@value right	label 右侧对齐
-	 * @property {String } 	errorMessage 		显示的错误提示内容,如果为空字符串或者false,则不显示错误信息
-	 * @property {String } 	name 				表单域的属性名,在使用校验规则时必填
-	 * @property {String } 	leftIcon 			【1.4.0废弃】label左边的图标,限 uni-ui 的图标名称
-	 * @property {String } 	iconColor 		【1.4.0废弃】左边通过icon配置的图标的颜色(默认#606266)
-	 * @property {String} validateTrigger = [bind|submit|blur]	【1.4.0废弃】校验触发器方式 默认 submit
-	 * 	@value bind 	发生变化时触发
-	 * 	@value submit 提交时触发
-	 * 	@value blur 	失去焦点触发
-	 * @property {String } 	labelPosition = [top|left] 【1.4.0废弃】label的文字的位置(默认left)
-	 * 	@value top	顶部显示 label
-	 * 	@value left	左侧显示 label
-	 */
-
-	export default {
-		name: 'uniFormsItem',
-		options: {
-			virtualHost: true
-		},
-		provide() {
-			return {
-				uniFormItem: this
-			}
-		},
-		inject: {
-			form: {
-				from: 'uniForm',
-				default: null
-			},
-		},
-		props: {
-			// 表单校验规则
-			rules: {
-				type: Array,
-				default () {
-					return null;
-				}
-			},
-			// 表单域的属性名,在使用校验规则时必填
-			name: {
-				type: [String, Array],
-				default: ''
-			},
-			required: {
-				type: Boolean,
-				default: false
-			},
-			label: {
-				type: String,
-				default: ''
-			},
-			// label的宽度 ,默认 80
-			labelWidth: {
-				type: [String, Number],
-				default: ''
-			},
-			// label 居中方式,默认 left 取值 left/center/right
-			labelAlign: {
-				type: String,
-				default: ''
-			},
-			// 强制显示错误信息
-			errorMessage: {
-				type: [String, Boolean],
-				default: ''
-			},
-			// 1.4.0 弃用,统一使用 form 的校验时机
-			// validateTrigger: {
-			// 	type: String,
-			// 	default: ''
-			// },
-			// 1.4.0 弃用,统一使用 form 的label 位置
-			// labelPosition: {
-			// 	type: String,
-			// 	default: ''
-			// },
-			// 1.4.0 以下属性已经废弃,请使用  #label 插槽代替
-			leftIcon: String,
-			iconColor: {
-				type: String,
-				default: '#606266'
-			},
-		},
-		data() {
-			return {
-				errMsg: '',
-				userRules: null,
-				localLabelAlign: 'left',
-				localLabelWidth: '65px',
-				localLabelPos: 'left',
-				border: false,
-				isFirstBorder: false,
-			};
-		},
-		computed: {
-			// 处理错误信息
-			msg() {
-				return this.errorMessage || this.errMsg;
-			}
-		},
-		watch: {
-			// 规则发生变化通知子组件更新
-			'form.formRules'(val) {
-				// TODO 处理头条vue3 watch不生效的问题
-				// #ifndef MP-TOUTIAO
-				this.init()
-				// #endif
-			},
-			'form.labelWidth'(val) {
-				// 宽度
-				this.localLabelWidth = this._labelWidthUnit(val)
-
-			},
-			'form.labelPosition'(val) {
-				// 标签位置
-				this.localLabelPos = this._labelPosition()
-			},
-			'form.labelAlign'(val) {
-
-			}
-		},
-		created() {
-			this.init(true)
-			if (this.name && this.form) {
-				// TODO 处理头条vue3 watch不生效的问题
-				// #ifdef MP-TOUTIAO
-				this.$watch('form.formRules', () => {
-					this.init()
-				})
-				// #endif
-
-				// 监听变化
-				this.$watch(
-					() => {
-						const val = this.form._getDataValue(this.name, this.form.localData)
-						return val
-					},
-					(value, oldVal) => {
-						const isEqual = this.form._isEqual(value, oldVal)
-						// 简单判断前后值的变化,只有发生变化才会发生校验
-						// TODO  如果 oldVal = undefined ,那么大概率是源数据里没有值导致 ,这个情况不哦校验 ,可能不严谨 ,需要在做观察
-						// fix by mehaotian 暂时取消 && oldVal !== undefined ,如果formData 中不存在,可能会不校验
-						if (!isEqual) {
-							const val = this.itemSetValue(value)
-							this.onFieldChange(val, false)
-						}
-					}, {
-						immediate: false
-					}
-				);
-			}
-
-		},
-		// #ifndef VUE3
-		destroyed() {
-			if (this.__isUnmounted) return
-			this.unInit()
-		},
-		// #endif
-		// #ifdef VUE3
-		unmounted() {
-			this.__isUnmounted = true
-			this.unInit()
-		},
-		// #endif
-		methods: {
-			/**
-			 * 外部调用方法
-			 * 设置规则 ,主要用于小程序自定义检验规则
-			 * @param {Array} rules 规则源数据
-			 */
-			setRules(rules = null) {
-				this.userRules = rules
-				this.init(false)
-			},
-			// 兼容老版本表单组件
-			setValue() {
-				// console.log('setValue 方法已经弃用,请使用最新版本的 uni-forms 表单组件以及其他关联组件。');
-			},
-			/**
-			 * 外部调用方法
-			 * 校验数据
-			 * @param {any} value 需要校验的数据
-			 * @param {boolean} 是否立即校验
-			 * @return {Array|null} 校验内容
-			 */
-			async onFieldChange(value, formtrigger = true) {
-				const {
-					formData,
-					localData,
-					errShowType,
-					validateCheck,
-					validateTrigger,
-					_isRequiredField,
-					_realName
-				} = this.form
-				const name = _realName(this.name)
-				if (!value) {
-					value = this.form.formData[name]
-				}
-				// fixd by mehaotian 不在校验前清空信息,解决闪屏的问题
-				// this.errMsg = '';
-
-				// fix by mehaotian 解决没有检验规则的情况下,抛出错误的问题
-				const ruleLen = this.itemRules.rules && this.itemRules.rules.length
-				if (!this.validator || !ruleLen || ruleLen === 0) return;
-
-				// 检验时机
-				// let trigger = this.isTrigger(this.itemRules.validateTrigger, this.validateTrigger, validateTrigger);
-				const isRequiredField = _isRequiredField(this.itemRules.rules || []);
-				let result = null;
-				// 只有等于 bind 时 ,才能开启时实校验
-				if (validateTrigger === 'bind' || formtrigger) {
-					// 校验当前表单项
-					result = await this.validator.validateUpdate({
-							[name]: value
-						},
-						formData
-					);
-
-					// 判断是否必填,非必填,不填不校验,填写才校验 ,暂时只处理 undefined  和空的情况
-					if (!isRequiredField && (value === undefined || value === '')) {
-						result = null;
-					}
-
-					// 判断错误信息显示类型
-					if (result && result.errorMessage) {
-						if (errShowType === 'undertext') {
-							// 获取错误信息
-							this.errMsg = !result ? '' : result.errorMessage;
-						}
-						if (errShowType === 'toast') {
-							uni.showToast({
-								title: result.errorMessage || '校验错误',
-								icon: 'none'
-							});
-						}
-						if (errShowType === 'modal') {
-							uni.showModal({
-								title: '提示',
-								content: result.errorMessage || '校验错误'
-							});
-						}
-					} else {
-						this.errMsg = ''
-					}
-					// 通知 form 组件更新事件
-					validateCheck(result ? result : null)
-				} else {
-					this.errMsg = ''
-				}
-				return result ? result : null;
-			},
-			/**
-			 * 初始组件数据
-			 */
-			init(type = false) {
-				const {
-					validator,
-					formRules,
-					childrens,
-					formData,
-					localData,
-					_realName,
-					labelWidth,
-					_getDataValue,
-					_setDataValue
-				} = this.form || {}
-				// 对齐方式
-				this.localLabelAlign = this._justifyContent()
-				// 宽度
-				this.localLabelWidth = this._labelWidthUnit(labelWidth)
-				// 标签位置
-				this.localLabelPos = this._labelPosition()
-				// 将需要校验的子组件加入form 队列
-				this.form && type && childrens.push(this)
-
-				if (!validator || !formRules) return
-				// 判断第一个 item
-				if (!this.form.isFirstBorder) {
-					this.form.isFirstBorder = true;
-					this.isFirstBorder = true;
-				}
-
-				// 判断 group 里的第一个 item
-				if (this.group) {
-					if (!this.group.isFirstBorder) {
-						this.group.isFirstBorder = true;
-						this.isFirstBorder = true;
-					}
-				}
-				this.border = this.form.border;
-				// 获取子域的真实名称
-				const name = _realName(this.name)
-				const itemRule = this.userRules || this.rules
-				if (typeof formRules === 'object' && itemRule) {
-					// 子规则替换父规则
-					formRules[name] = {
-						rules: itemRule
-					}
-					validator.updateSchema(formRules);
-				}
-				// 注册校验规则
-				const itemRules = formRules[name] || {}
-				this.itemRules = itemRules
-				// 注册校验函数
-				this.validator = validator
-				// 默认值赋予
-				this.itemSetValue(_getDataValue(this.name, localData))
-			},
-			unInit() {
-				if (this.form) {
-					const {
-						childrens,
-						formData,
-						_realName
-					} = this.form
-					childrens.forEach((item, index) => {
-						if (item === this) {
-							this.form.childrens.splice(index, 1)
-							delete formData[_realName(item.name)]
-						}
-					})
-				}
-			},
-			// 设置item 的值
-			itemSetValue(value) {
-				const name = this.form._realName(this.name)
-				const rules = this.itemRules.rules || []
-				const val = this.form._getValue(name, value, rules)
-				this.form._setDataValue(name, this.form.formData, val)
-				return val
-			},
-
-			/**
-			 * 移除该表单项的校验结果
-			 */
-			clearValidate() {
-				this.errMsg = '';
-			},
-
-			// 是否显示星号
-			_isRequired() {
-				// TODO 不根据规则显示 星号,考虑后续兼容
-				// if (this.form) {
-				// 	if (this.form._isRequiredField(this.itemRules.rules || []) && this.required) {
-				// 		return true
-				// 	}
-				// 	return false
-				// }
-				return this.required
-			},
-
-			// 处理对齐方式
-			_justifyContent() {
-				if (this.form) {
-					const {
-						labelAlign
-					} = this.form
-					let labelAli = this.labelAlign ? this.labelAlign : labelAlign;
-					if (labelAli === 'left') return 'flex-start';
-					if (labelAli === 'center') return 'center';
-					if (labelAli === 'right') return 'flex-end';
-				}
-				return 'flex-start';
-			},
-			// 处理 label宽度单位 ,继承父元素的值
-			_labelWidthUnit(labelWidth) {
-
-				// if (this.form) {
-				// 	const {
-				// 		labelWidth
-				// 	} = this.form
-				return this.num2px(this.labelWidth ? this.labelWidth : (labelWidth || (this.label ? 65 : 'auto')))
-				// }
-				// return '65px'
-			},
-			// 处理 label 位置
-			_labelPosition() {
-				if (this.form) return this.form.labelPosition || 'left'
-				return 'left'
-
-			},
-
-			/**
-			 * 触发时机
-			 * @param {Object} rule 当前规则内时机
-			 * @param {Object} itemRlue 当前组件时机
-			 * @param {Object} parentRule 父组件时机
-			 */
-			isTrigger(rule, itemRlue, parentRule) {
-				//  bind  submit
-				if (rule === 'submit' || !rule) {
-					if (rule === undefined) {
-						if (itemRlue !== 'bind') {
-							if (!itemRlue) {
-								return parentRule === '' ? 'bind' : 'submit';
-							}
-							return 'submit';
-						}
-						return 'bind';
-					}
-					return 'submit';
-				}
-				return 'bind';
-			},
-			num2px(num) {
-				if (typeof num === 'number') {
-					return `${num}px`
-				}
-				return num
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.uni-forms-item {
-		position: relative;
-		display: flex;
-		/* #ifdef APP-NVUE */
-		// 在 nvue 中,使用 margin-bottom error 信息会被隐藏
-		padding-bottom: 22px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		margin-bottom: 22px;
-		/* #endif */
-		flex-direction: row;
-
-		&__label {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			text-align: left;
-			font-size: 14px;
-			color: #606266;
-			height: 36px;
-			padding: 0 12px 0 0;
-			/* #ifndef APP-NVUE */
-			vertical-align: middle;
-			flex-shrink: 0;
-			/* #endif */
-
-			/* #ifndef APP-NVUE */
-			box-sizing: border-box;
-
-			/* #endif */
-			&.no-label {
-				padding: 0;
-			}
-		}
-
-		&__content {
-			/* #ifndef MP-TOUTIAO */
-			// display: flex;
-			// align-items: center;
-			/* #endif */
-			position: relative;
-			font-size: 14px;
-			flex: 1;
-			/* #ifndef APP-NVUE */
-			box-sizing: border-box;
-			/* #endif */
-			flex-direction: row;
-
-			/* #ifndef APP || H5 || MP-WEIXIN || APP-NVUE */
-			// TODO 因为小程序平台会多一层标签节点 ,所以需要在多余节点继承当前样式
-			&>uni-easyinput,
-			&>uni-data-picker {
-				width: 100%;
-			}
-
-			/* #endif */
-
-		}
-
-		& .uni-forms-item__nuve-content {
-			display: flex;
-			flex-direction: column;
-			flex: 1;
-		}
-
-		&__error {
-			color: #f56c6c;
-			font-size: 12px;
-			line-height: 1;
-			padding-top: 4px;
-			position: absolute;
-			/* #ifndef APP-NVUE */
-			top: 100%;
-			left: 0;
-			transition: transform 0.3s;
-			transform: translateY(-100%);
-			/* #endif */
-			/* #ifdef APP-NVUE */
-			bottom: 5px;
-			/* #endif */
-
-			opacity: 0;
-
-			.error-text {
-				// 只有 nvue 下这个样式才生效
-				color: #f56c6c;
-				font-size: 12px;
-			}
-
-			&.msg--active {
-				opacity: 1;
-				transform: translateY(0%);
-			}
-		}
-
-		// 位置修饰样式
-		&.is-direction-left {
-			flex-direction: row;
-		}
-
-		&.is-direction-top {
-			flex-direction: column;
-
-			.uni-forms-item__label {
-				padding: 0 0 8px;
-				line-height: 1.5715;
-				text-align: left;
-				/* #ifndef APP-NVUE */
-				white-space: initial;
-				/* #endif */
-			}
-		}
-
-		.is-required {
-			// color: $uni-color-error;
-			color: #dd524d;
-			font-weight: bold;
-		}
-	}
-
-
-	.uni-forms-item--border {
-		margin-bottom: 0;
-		padding: 10px 0;
-		// padding-bottom: 0;
-		border-top: 1px #eee solid;
-
-		/* #ifndef APP-NVUE */
-		.uni-forms-item__content {
-			flex-direction: column;
-			justify-content: flex-start;
-			align-items: flex-start;
-
-			.uni-forms-item__error {
-				position: relative;
-				top: 5px;
-				left: 0;
-				padding-top: 0;
-			}
-		}
-
-		/* #endif */
-
-		/* #ifdef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-
-		.uni-forms-item__error {
-			position: relative;
-			top: 0px;
-			left: 0;
-			padding-top: 0;
-			margin-top: 5px;
-		}
-
-		/* #endif */
-
-	}
-
-	.is-first-border {
-		/* #ifndef APP-NVUE */
-		border: none;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		border-width: 0;
-		/* #endif */
-	}
-</style>

+ 0 - 397
node_modules/@dcloudio/uni-ui/lib/uni-forms/uni-forms.vue

@@ -1,397 +0,0 @@
-<template>
-	<view class="uni-forms">
-		<form>
-			<slot></slot>
-		</form>
-	</view>
-</template>
-
-<script>
-	import Validator from './validate.js';
-	import {
-		deepCopy,
-		getValue,
-		isRequiredField,
-		setDataValue,
-		getDataValue,
-		realName,
-		isRealName,
-		rawData,
-		isEqual
-	} from './utils.js'
-
-	// #ifndef VUE3
-	// 后续会慢慢废弃这个方法
-	import Vue from 'vue';
-	Vue.prototype.binddata = function(name, value, formName) {
-		if (formName) {
-			this.$refs[formName].setValue(name, value);
-		} else {
-			let formVm;
-			for (let i in this.$refs) {
-				const vm = this.$refs[i];
-				if (vm && vm.$options && vm.$options.name === 'uniForms') {
-					formVm = vm;
-					break;
-				}
-			}
-			if (!formVm) return console.error('当前 uni-froms 组件缺少 ref 属性');
-			formVm.setValue(name, value);
-		}
-	};
-	// #endif
-	/**
-	 * Forms 表单
-	 * @description 由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=2773
-	 * @property {Object} rules	表单校验规则
-	 * @property {String} validateTrigger = [bind|submit|blur]	校验触发器方式 默认 submit
-	 * @value bind		发生变化时触发
-	 * @value submit	提交时触发
-	 * @value blur	  失去焦点时触发
-	 * @property {String} labelPosition = [top|left]	label 位置 默认 left
-	 * @value top		顶部显示 label
-	 * @value left	左侧显示 label
-	 * @property {String} labelWidth	label 宽度,默认 65px
-	 * @property {String} labelAlign = [left|center|right]	label 居中方式  默认 left
-	 * @value left		label 左侧显示
-	 * @value center	label 居中
-	 * @value right		label 右侧对齐
-	 * @property {String} errShowType = [undertext|toast|modal]	校验错误信息提示方式
-	 * @value undertext	错误信息在底部显示
-	 * @value toast			错误信息toast显示
-	 * @value modal			错误信息modal显示
-	 * @event {Function} submit	提交时触发
-	 * @event {Function} validate	校验结果发生变化触发
-	 */
-	export default {
-		name: 'uniForms',
-		emits: ['validate', 'submit'],
-		options: {
-			virtualHost: true
-		},
-		props: {
-			// 即将弃用
-			value: {
-				type: Object,
-				default () {
-					return null;
-				}
-			},
-			// vue3 替换 value 属性
-			modelValue: {
-				type: Object,
-				default () {
-					return null;
-				}
-			},
-			// 1.4.0 开始将不支持 v-model ,且废弃 value 和 modelValue
-			model: {
-				type: Object,
-				default () {
-					return null;
-				}
-			},
-			// 表单校验规则
-			rules: {
-				type: Object,
-				default () {
-					return {};
-				}
-			},
-			//校验错误信息提示方式 默认 undertext 取值 [undertext|toast|modal]
-			errShowType: {
-				type: String,
-				default: 'undertext'
-			},
-			// 校验触发器方式 默认 bind 取值 [bind|submit]
-			validateTrigger: {
-				type: String,
-				default: 'submit'
-			},
-			// label 位置,默认 left 取值  top/left
-			labelPosition: {
-				type: String,
-				default: 'left'
-			},
-			// label 宽度
-			labelWidth: {
-				type: [String, Number],
-				default: ''
-			},
-			// label 居中方式,默认 left 取值 left/center/right
-			labelAlign: {
-				type: String,
-				default: 'left'
-			},
-			border: {
-				type: Boolean,
-				default: false
-			}
-		},
-		provide() {
-			return {
-				uniForm: this
-			}
-		},
-		data() {
-			return {
-				// 表单本地值的记录,不应该与传如的值进行关联
-				formData: {},
-				formRules: {}
-			};
-		},
-		computed: {
-			// 计算数据源变化的
-			localData() {
-				const localVal = this.model || this.modelValue || this.value
-				if (localVal) {
-					return deepCopy(localVal)
-				}
-				return {}
-			}
-		},
-		watch: {
-			// 监听数据变化 ,暂时不使用,需要单独赋值
-			// localData: {},
-			// 监听规则变化
-			rules: {
-				handler: function(val, oldVal) {
-					this.setRules(val)
-				},
-				deep: true,
-				immediate: true
-			}
-		},
-		created() {
-			// #ifdef VUE3
-			let getbinddata = getApp().$vm.$.appContext.config.globalProperties.binddata
-			if (!getbinddata) {
-				getApp().$vm.$.appContext.config.globalProperties.binddata = function(name, value, formName) {
-					if (formName) {
-						this.$refs[formName].setValue(name, value);
-					} else {
-						let formVm;
-						for (let i in this.$refs) {
-							const vm = this.$refs[i];
-							if (vm && vm.$options && vm.$options.name === 'uniForms') {
-								formVm = vm;
-								break;
-							}
-						}
-						if (!formVm) return console.error('当前 uni-froms 组件缺少 ref 属性');
-						formVm.setValue(name, value);
-					}
-				}
-			}
-			// #endif
-
-			// 子组件实例数组
-			this.childrens = []
-			// TODO 兼容旧版 uni-data-picker ,新版本中无效,只是避免报错
-			this.inputChildrens = []
-			this.setRules(this.rules)
-		},
-		methods: {
-			/**
-			 * 外部调用方法
-			 * 设置规则 ,主要用于小程序自定义检验规则
-			 * @param {Array} rules 规则源数据
-			 */
-			setRules(rules) {
-				// TODO 有可能子组件合并规则的时机比这个要早,所以需要合并对象 ,而不是直接赋值,可能会被覆盖
-				this.formRules = Object.assign({}, this.formRules, rules)
-				// 初始化校验函数
-				this.validator = new Validator(rules);
-			},
-
-			/**
-			 * 外部调用方法
-			 * 设置数据,用于设置表单数据,公开给用户使用 , 不支持在动态表单中使用
-			 * @param {Object} key
-			 * @param {Object} value
-			 */
-			setValue(key, value) {
-				let example = this.childrens.find(child => child.name === key);
-				if (!example) return null;
-				this.formData[key] = getValue(key, value, (this.formRules[key] && this.formRules[key].rules) || [])
-				return example.onFieldChange(this.formData[key]);
-			},
-
-			/**
-			 * 外部调用方法
-			 * 手动提交校验表单
-			 * 对整个表单进行校验的方法,参数为一个回调函数。
-			 * @param {Array} keepitem 保留不参与校验的字段
-			 * @param {type} callback 方法回调
-			 */
-			validate(keepitem, callback) {
-				return this.checkAll(this.formData, keepitem, callback);
-			},
-
-			/**
-			 * 外部调用方法
-			 * 部分表单校验
-			 * @param {Array|String} props 需要校验的字段
-			 * @param {Function} 回调函数
-			 */
-			validateField(props = [], callback) {
-				props = [].concat(props);
-				let invalidFields = {};
-				this.childrens.forEach(item => {
-					const name = realName(item.name)
-					if (props.indexOf(name) !== -1) {
-						invalidFields = Object.assign({}, invalidFields, {
-							[name]: this.formData[name]
-						});
-					}
-				});
-				return this.checkAll(invalidFields, [], callback);
-			},
-
-			/**
-			 * 外部调用方法
-			 * 移除表单项的校验结果。传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果
-			 * @param {Array|String} props 需要移除校验的字段 ,不填为所有
-			 */
-			clearValidate(props = []) {
-				props = [].concat(props);
-				this.childrens.forEach(item => {
-					if (props.length === 0) {
-						item.errMsg = '';
-					} else {
-						const name = realName(item.name)
-						if (props.indexOf(name) !== -1) {
-							item.errMsg = '';
-						}
-					}
-				});
-			},
-
-			/**
-			 * 外部调用方法 ,即将废弃
-			 * 手动提交校验表单
-			 * 对整个表单进行校验的方法,参数为一个回调函数。
-			 * @param {Array} keepitem 保留不参与校验的字段
-			 * @param {type} callback 方法回调
-			 */
-			submit(keepitem, callback, type) {
-				for (let i in this.dataValue) {
-					const itemData = this.childrens.find(v => v.name === i);
-					if (itemData) {
-						if (this.formData[i] === undefined) {
-							this.formData[i] = this._getValue(i, this.dataValue[i]);
-						}
-					}
-				}
-
-				if (!type) {
-					console.warn('submit 方法即将废弃,请使用validate方法代替!');
-				}
-
-				return this.checkAll(this.formData, keepitem, callback, 'submit');
-			},
-
-			// 校验所有
-			async checkAll(invalidFields, keepitem, callback, type) {
-				// 不存在校验规则 ,则停止校验流程
-				if (!this.validator) return
-				let childrens = []
-				// 处理参与校验的item实例
-				for (let i in invalidFields) {
-					const item = this.childrens.find(v => realName(v.name) === i)
-					if (item) {
-						childrens.push(item)
-					}
-				}
-
-				// 如果validate第一个参数是funciont ,那就走回调
-				if (!callback && typeof keepitem === 'function') {
-					callback = keepitem;
-				}
-
-				let promise;
-				// 如果不存在回调,那么使用 Promise 方式返回
-				if (!callback && typeof callback !== 'function' && Promise) {
-					promise = new Promise((resolve, reject) => {
-						callback = function(valid, invalidFields) {
-							!valid ? resolve(invalidFields) : reject(valid);
-						};
-					});
-				}
-
-				let results = [];
-				// 避免引用错乱 ,建议拷贝对象处理
-				let tempFormData = JSON.parse(JSON.stringify(invalidFields))
-				// 所有子组件参与校验,使用 for 可以使用  awiat
-				for (let i in childrens) {
-					const child = childrens[i]
-					let name = realName(child.name);
-					const result = await child.onFieldChange(tempFormData[name]);
-					if (result) {
-						results.push(result);
-						// toast ,modal 只需要执行第一次就可以
-						if (this.errShowType === 'toast' || this.errShowType === 'modal') break;
-					}
-				}
-
-
-				if (Array.isArray(results)) {
-					if (results.length === 0) results = null;
-				}
-				if (Array.isArray(keepitem)) {
-					keepitem.forEach(v => {
-						let vName = realName(v);
-						let value = getDataValue(v, this.localData)
-						if (value !== undefined) {
-							tempFormData[vName] = value
-						}
-					});
-				}
-
-				// TODO submit 即将废弃
-				if (type === 'submit') {
-					this.$emit('submit', {
-						detail: {
-							value: tempFormData,
-							errors: results
-						}
-					});
-				} else {
-					this.$emit('validate', results);
-				}
-
-				// const resetFormData = rawData(tempFormData, this.localData, this.name)
-				let resetFormData = {}
-				resetFormData = rawData(tempFormData, this.name)
-				callback && typeof callback === 'function' && callback(results, resetFormData);
-
-				if (promise && callback) {
-					return promise;
-				} else {
-					return null;
-				}
-
-			},
-
-			/**
-			 * 返回validate事件
-			 * @param {Object} result
-			 */
-			validateCheck(result) {
-				this.$emit('validate', result);
-			},
-			_getValue: getValue,
-			_isRequiredField: isRequiredField,
-			_setDataValue: setDataValue,
-			_getDataValue: getDataValue,
-			_realName: realName,
-			_isRealName: isRealName,
-			_isEqual: isEqual
-		}
-	};
-</script>
-
-<style lang="scss">
-	.uni-forms {}
-</style>

+ 0 - 293
node_modules/@dcloudio/uni-ui/lib/uni-forms/utils.js

@@ -1,293 +0,0 @@
-/**
- * 简单处理对象拷贝
- * @param {Obejct} 被拷贝对象
- * @@return {Object} 拷贝对象
- */
-export const deepCopy = (val) => {
-	return JSON.parse(JSON.stringify(val))
-}
-/**
- * 过滤数字类型
- * @param {String} format 数字类型
- * @@return {Boolean} 返回是否为数字类型
- */
-export const typeFilter = (format) => {
-	return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp';
-}
-
-/**
- * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined
- * @param {String} key 字段名
- * @param {any} value 字段值
- * @param {Object} rules 表单校验规则
- */
-export const getValue = (key, value, rules) => {
-	const isRuleNumType = rules.find(val => val.format && typeFilter(val.format));
-	const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool');
-	// 输入类型为 number
-	if (!!isRuleNumType) {
-		if (!value && value !== 0) {
-			value = null
-		} else {
-			value = isNumber(Number(value)) ? Number(value) : value
-		}
-	}
-
-	// 输入类型为 boolean
-	if (!!isRuleBoolType) {
-		value = isBoolean(value) ? value : false
-	}
-
-	return value;
-}
-
-/**
- * 获取表单数据
- * @param {String|Array} name 真实名称,需要使用 realName 获取
- * @param {Object} data 原始数据
- * @param {any} value  需要设置的值
- */
-export const setDataValue = (field, formdata, value) => {
-	formdata[field] = value
-	return value || ''
-}
-
-/**
- * 获取表单数据
- * @param {String|Array} field 真实名称,需要使用 realName 获取
- * @param {Object} data 原始数据
- */
-export const getDataValue = (field, data) => {
-	return objGet(data, field)
-}
-
-/**
- * 获取表单类型
- * @param {String|Array} field 真实名称,需要使用 realName 获取
- */
-export const getDataValueType = (field, data) => {
-	const value = getDataValue(field, data)
-	return {
-		type: type(value),
-		value
-	}
-}
-
-/**
- * 获取表单可用的真实name
- * @param {String|Array} name 表单name
- * @@return {String} 表单可用的真实name
- */
-export const realName = (name, data = {}) => {
-	const base_name = _basePath(name)
-	if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) {
-		const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_')
-		return realname
-	}
-	return base_name[0] || name
-}
-
-/**
- * 判断是否表单可用的真实name
- * @param {String|Array} name 表单name
- * @@return {String} 表单可用的真实name
- */
-export const isRealName = (name) => {
-	const reg = /^_formdata_#*/
-	return reg.test(name)
-}
-
-/**
- * 获取表单数据的原始格式
- * @@return {Object|Array} object 需要解析的数据
- */
-export const rawData = (object = {}, name) => {
-	let newData = JSON.parse(JSON.stringify(object))
-	let formData = {}
-	for(let i in newData){
-		let path = name2arr(i)
-		objSet(formData,path,newData[i])
-	}
-	return formData
-}
-
-/**
- * 真实name还原为 array
- * @param {*} name 
- */
-export const name2arr = (name) => {
-	let field = name.replace('_formdata_#', '')
-	field = field.split('#').map(v => (isNumber(v) ? Number(v) : v))
-	return field
-}
-
-/**
- * 对象中设置值
- * @param {Object|Array} object 源数据
- * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c']
- * @param {String} value 需要设置的值
- */
-export const objSet = (object, path, value) => {
-	if (typeof object !== 'object') return object;
-	_basePath(path).reduce((o, k, i, _) => {
-		if (i === _.length - 1) { 
-			// 若遍历结束直接赋值
-			o[k] = value
-			return null
-		} else if (k in o) { 
-			// 若存在对应路径,则返回找到的对象,进行下一次遍历
-			return o[k]
-		} else { 
-			// 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象
-			o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {}
-			return o[k]
-		}
-	}, object)
-	// 返回object
-	return object;
-}
-
-// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用
-function _basePath(path) {
-	// 若是数组,则直接返回
-	if (Array.isArray(path)) return path
-	// 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']'
-	return path.replace(/\[/g, '.').replace(/\]/g, '').split('.')
-}
-
-/**
- * 从对象中获取值
- * @param {Object|Array} object 源数据
- * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c']
- * @param {String} defaultVal 如果无法从调用链中获取值的默认值
- */
-export const objGet = (object, path, defaultVal = 'undefined') => {
-	// 先将path处理成统一格式
-	let newPath = _basePath(path)
-	// 递归处理,返回最后结果
-	let val = newPath.reduce((o, k) => {
-		return (o || {})[k]
-	}, object);
-	return !val || val !== undefined ? val : defaultVal
-}
-
-
-/**
- * 是否为 number 类型 
- * @param {any} num 需要判断的值
- * @return {Boolean} 是否为 number
- */
-export const isNumber = (num) => {
-	return !isNaN(Number(num))
-}
-
-/**
- * 是否为 boolean 类型 
- * @param {any} bool 需要判断的值
- * @return {Boolean} 是否为 boolean
- */
-export const isBoolean = (bool) => {
-	return (typeof bool === 'boolean')
-}
-/**
- * 是否有必填字段
- * @param {Object} rules 规则
- * @return {Boolean} 是否有必填字段
- */
-export const isRequiredField = (rules) => {
-	let isNoField = false;
-	for (let i = 0; i < rules.length; i++) {
-		const ruleData = rules[i];
-		if (ruleData.required) {
-			isNoField = true;
-			break;
-		}
-	}
-	return isNoField;
-}
-
-
-/**
- * 获取数据类型
- * @param {Any} obj 需要获取数据类型的值
- */
-export const type = (obj) => {
-	var class2type = {};
-
-	// 生成class2type映射
-	"Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) {
-		class2type["[object " + item + "]"] = item.toLowerCase();
-	})
-	if (obj == null) {
-		return obj + "";
-	}
-	return typeof obj === "object" || typeof obj === "function" ?
-		class2type[Object.prototype.toString.call(obj)] || "object" :
-		typeof obj;
-}
-
-/**
- * 判断两个值是否相等
- * @param {any} a 值  
- * @param {any} b 值  
- * @return {Boolean} 是否相等
- */
-export const isEqual = (a, b) => {
-	//如果a和b本来就全等
-	if (a === b) {
-		//判断是否为0和-0
-		return a !== 0 || 1 / a === 1 / b;
-	}
-	//判断是否为null和undefined
-	if (a == null || b == null) {
-		return a === b;
-	}
-	//接下来判断a和b的数据类型
-	var classNameA = toString.call(a),
-		classNameB = toString.call(b);
-	//如果数据类型不相等,则返回false
-	if (classNameA !== classNameB) {
-		return false;
-	}
-	//如果数据类型相等,再根据不同数据类型分别判断
-	switch (classNameA) {
-		case '[object RegExp]':
-		case '[object String]':
-			//进行字符串转换比较
-			return '' + a === '' + b;
-		case '[object Number]':
-			//进行数字转换比较,判断是否为NaN
-			if (+a !== +a) {
-				return +b !== +b;
-			}
-			//判断是否为0或-0
-			return +a === 0 ? 1 / +a === 1 / b : +a === +b;
-		case '[object Date]':
-		case '[object Boolean]':
-			return +a === +b;
-	}
-	//如果是对象类型
-	if (classNameA == '[object Object]') {
-		//获取a和b的属性长度
-		var propsA = Object.getOwnPropertyNames(a),
-			propsB = Object.getOwnPropertyNames(b);
-		if (propsA.length != propsB.length) {
-			return false;
-		}
-		for (var i = 0; i < propsA.length; i++) {
-			var propName = propsA[i];
-			//如果对应属性对应值不相等,则返回false
-			if (a[propName] !== b[propName]) {
-				return false;
-			}
-		}
-		return true;
-	}
-	//如果是数组类型
-	if (classNameA == '[object Array]') {
-		if (a.toString() == b.toString()) {
-			return true;
-		}
-		return false;
-	}
-}

+ 0 - 486
node_modules/@dcloudio/uni-ui/lib/uni-forms/validate.js

@@ -1,486 +0,0 @@
-var pattern = {
-	email: /^\S+?@\S+?\.\S+?$/,
-	idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
-	url: new RegExp(
-		"^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$",
-		'i')
-};
-
-const FORMAT_MAPPING = {
-	"int": 'integer',
-	"bool": 'boolean',
-	"double": 'number',
-	"long": 'number',
-	"password": 'string'
-	// "fileurls": 'array'
-}
-
-function formatMessage(args, resources = '') {
-	var defaultMessage = ['label']
-	defaultMessage.forEach((item) => {
-		if (args[item] === undefined) {
-			args[item] = ''
-		}
-	})
-
-	let str = resources
-	for (let key in args) {
-		let reg = new RegExp('{' + key + '}')
-		str = str.replace(reg, args[key])
-	}
-	return str
-}
-
-function isEmptyValue(value, type) {
-	if (value === undefined || value === null) {
-		return true;
-	}
-
-	if (typeof value === 'string' && !value) {
-		return true;
-	}
-
-	if (Array.isArray(value) && !value.length) {
-		return true;
-	}
-
-	if (type === 'object' && !Object.keys(value).length) {
-		return true;
-	}
-
-	return false;
-}
-
-const types = {
-	integer(value) {
-		return types.number(value) && parseInt(value, 10) === value;
-	},
-	string(value) {
-		return typeof value === 'string';
-	},
-	number(value) {
-		if (isNaN(value)) {
-			return false;
-		}
-		return typeof value === 'number';
-	},
-	"boolean": function(value) {
-		return typeof value === 'boolean';
-	},
-	"float": function(value) {
-		return types.number(value) && !types.integer(value);
-	},
-	array(value) {
-		return Array.isArray(value);
-	},
-	object(value) {
-		return typeof value === 'object' && !types.array(value);
-	},
-	date(value) {
-		return value instanceof Date;
-	},
-	timestamp(value) {
-		if (!this.integer(value) || Math.abs(value).toString().length > 16) {
-			return false
-		}
-		return true;
-	},
-	file(value) {
-		return typeof value.url === 'string';
-	},
-	email(value) {
-		return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;
-	},
-	url(value) {
-		return typeof value === 'string' && !!value.match(pattern.url);
-	},
-	pattern(reg, value) {
-		try {
-			return new RegExp(reg).test(value);
-		} catch (e) {
-			return false;
-		}
-	},
-	method(value) {
-		return typeof value === 'function';
-	},
-	idcard(value) {
-		return typeof value === 'string' && !!value.match(pattern.idcard);
-	},
-	'url-https'(value) {
-		return this.url(value) && value.startsWith('https://');
-	},
-	'url-scheme'(value) {
-		return value.startsWith('://');
-	},
-	'url-web'(value) {
-		return false;
-	}
-}
-
-class RuleValidator {
-
-	constructor(message) {
-		this._message = message
-	}
-
-	async validateRule(fieldKey, fieldValue, value, data, allData) {
-		var result = null
-
-		let rules = fieldValue.rules
-
-		let hasRequired = rules.findIndex((item) => {
-			return item.required
-		})
-		if (hasRequired < 0) {
-			if (value === null || value === undefined) {
-				return result
-			}
-			if (typeof value === 'string' && !value.length) {
-				return result
-			}
-		}
-
-		var message = this._message
-
-		if (rules === undefined) {
-			return message['default']
-		}
-
-		for (var i = 0; i < rules.length; i++) {
-			let rule = rules[i]
-			let vt = this._getValidateType(rule)
-
-			Object.assign(rule, {
-				label: fieldValue.label || `["${fieldKey}"]`
-			})
-
-			if (RuleValidatorHelper[vt]) {
-				result = RuleValidatorHelper[vt](rule, value, message)
-				if (result != null) {
-					break
-				}
-			}
-
-			if (rule.validateExpr) {
-				let now = Date.now()
-				let resultExpr = rule.validateExpr(value, allData, now)
-				if (resultExpr === false) {
-					result = this._getMessage(rule, rule.errorMessage || this._message['default'])
-					break
-				}
-			}
-
-			if (rule.validateFunction) {
-				result = await this.validateFunction(rule, value, data, allData, vt)
-				if (result !== null) {
-					break
-				}
-			}
-		}
-
-		if (result !== null) {
-			result = message.TAG + result
-		}
-
-		return result
-	}
-
-	async validateFunction(rule, value, data, allData, vt) {
-		let result = null
-		try {
-			let callbackMessage = null
-			const res = await rule.validateFunction(rule, value, allData || data, (message) => {
-				callbackMessage = message
-			})
-			if (callbackMessage || (typeof res === 'string' && res) || res === false) {
-				result = this._getMessage(rule, callbackMessage || res, vt)
-			}
-		} catch (e) {
-			result = this._getMessage(rule, e.message, vt)
-		}
-		return result
-	}
-
-	_getMessage(rule, message, vt) {
-		return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default'])
-	}
-
-	_getValidateType(rule) {
-		var result = ''
-		if (rule.required) {
-			result = 'required'
-		} else if (rule.format) {
-			result = 'format'
-		} else if (rule.arrayType) {
-			result = 'arrayTypeFormat'
-		} else if (rule.range) {
-			result = 'range'
-		} else if (rule.maximum !== undefined || rule.minimum !== undefined) {
-			result = 'rangeNumber'
-		} else if (rule.maxLength !== undefined || rule.minLength !== undefined) {
-			result = 'rangeLength'
-		} else if (rule.pattern) {
-			result = 'pattern'
-		} else if (rule.validateFunction) {
-			result = 'validateFunction'
-		}
-		return result
-	}
-}
-
-const RuleValidatorHelper = {
-	required(rule, value, message) {
-		if (rule.required && isEmptyValue(value, rule.format || typeof value)) {
-			return formatMessage(rule, rule.errorMessage || message.required);
-		}
-
-		return null
-	},
-
-	range(rule, value, message) {
-		const {
-			range,
-			errorMessage
-		} = rule;
-
-		let list = new Array(range.length);
-		for (let i = 0; i < range.length; i++) {
-			const item = range[i];
-			if (types.object(item) && item.value !== undefined) {
-				list[i] = item.value;
-			} else {
-				list[i] = item;
-			}
-		}
-
-		let result = false
-		if (Array.isArray(value)) {
-			result = (new Set(value.concat(list)).size === list.length);
-		} else {
-			if (list.indexOf(value) > -1) {
-				result = true;
-			}
-		}
-
-		if (!result) {
-			return formatMessage(rule, errorMessage || message['enum']);
-		}
-
-		return null
-	},
-
-	rangeNumber(rule, value, message) {
-		if (!types.number(value)) {
-			return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
-		}
-
-		let {
-			minimum,
-			maximum,
-			exclusiveMinimum,
-			exclusiveMaximum
-		} = rule;
-		let min = exclusiveMinimum ? value <= minimum : value < minimum;
-		let max = exclusiveMaximum ? value >= maximum : value > maximum;
-
-		if (minimum !== undefined && min) {
-			return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ?
-				'exclusiveMinimum' : 'minimum'
-			])
-		} else if (maximum !== undefined && max) {
-			return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ?
-				'exclusiveMaximum' : 'maximum'
-			])
-		} else if (minimum !== undefined && maximum !== undefined && (min || max)) {
-			return formatMessage(rule, rule.errorMessage || message['number'].range)
-		}
-
-		return null
-	},
-
-	rangeLength(rule, value, message) {
-		if (!types.string(value) && !types.array(value)) {
-			return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
-		}
-
-		let min = rule.minLength;
-		let max = rule.maxLength;
-		let val = value.length;
-
-		if (min !== undefined && val < min) {
-			return formatMessage(rule, rule.errorMessage || message['length'].minLength)
-		} else if (max !== undefined && val > max) {
-			return formatMessage(rule, rule.errorMessage || message['length'].maxLength)
-		} else if (min !== undefined && max !== undefined && (val < min || val > max)) {
-			return formatMessage(rule, rule.errorMessage || message['length'].range)
-		}
-
-		return null
-	},
-
-	pattern(rule, value, message) {
-		if (!types['pattern'](rule.pattern, value)) {
-			return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
-		}
-
-		return null
-	},
-
-	format(rule, value, message) {
-		var customTypes = Object.keys(types);
-		var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType);
-
-		if (customTypes.indexOf(format) > -1) {
-			if (!types[format](value)) {
-				return formatMessage(rule, rule.errorMessage || message.typeError);
-			}
-		}
-
-		return null
-	},
-
-	arrayTypeFormat(rule, value, message) {
-		if (!Array.isArray(value)) {
-			return formatMessage(rule, rule.errorMessage || message.typeError);
-		}
-
-		for (let i = 0; i < value.length; i++) {
-			const element = value[i];
-			let formatResult = this.format(rule, element, message)
-			if (formatResult !== null) {
-				return formatResult
-			}
-		}
-
-		return null
-	}
-}
-
-class SchemaValidator extends RuleValidator {
-
-	constructor(schema, options) {
-		super(SchemaValidator.message);
-
-		this._schema = schema
-		this._options = options || null
-	}
-
-	updateSchema(schema) {
-		this._schema = schema
-	}
-
-	async validate(data, allData) {
-		let result = this._checkFieldInSchema(data)
-		if (!result) {
-			result = await this.invokeValidate(data, false, allData)
-		}
-		return result.length ? result[0] : null
-	}
-
-	async validateAll(data, allData) {
-		let result = this._checkFieldInSchema(data)
-		if (!result) {
-			result = await this.invokeValidate(data, true, allData)
-		}
-		return result
-	}
-
-	async validateUpdate(data, allData) {
-		let result = this._checkFieldInSchema(data)
-		if (!result) {
-			result = await this.invokeValidateUpdate(data, false, allData)
-		}
-		return result.length ? result[0] : null
-	}
-
-	async invokeValidate(data, all, allData) {
-		let result = []
-		let schema = this._schema
-		for (let key in schema) {
-			let value = schema[key]
-			let errorMessage = await this.validateRule(key, value, data[key], data, allData)
-			if (errorMessage != null) {
-				result.push({
-					key,
-					errorMessage
-				})
-				if (!all) break
-			}
-		}
-		return result
-	}
-
-	async invokeValidateUpdate(data, all, allData) {
-		let result = []
-		for (let key in data) {
-			let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData)
-			if (errorMessage != null) {
-				result.push({
-					key,
-					errorMessage
-				})
-				if (!all) break
-			}
-		}
-		return result
-	}
-
-	_checkFieldInSchema(data) {
-		var keys = Object.keys(data)
-		var keys2 = Object.keys(this._schema)
-		if (new Set(keys.concat(keys2)).size === keys2.length) {
-			return ''
-		}
-
-		var noExistFields = keys.filter((key) => {
-			return keys2.indexOf(key) < 0;
-		})
-		var errorMessage = formatMessage({
-			field: JSON.stringify(noExistFields)
-		}, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid'])
-		return [{
-			key: 'invalid',
-			errorMessage
-		}]
-	}
-}
-
-function Message() {
-	return {
-		TAG: "",
-		default: '验证错误',
-		defaultInvalid: '提交的字段{field}在数据库中并不存在',
-		validateFunction: '验证无效',
-		required: '{label}必填',
-		'enum': '{label}超出范围',
-		timestamp: '{label}格式无效',
-		whitespace: '{label}不能为空',
-		typeError: '{label}类型无效',
-		date: {
-			format: '{label}日期{value}格式无效',
-			parse: '{label}日期无法解析,{value}无效',
-			invalid: '{label}日期{value}无效'
-		},
-		length: {
-			minLength: '{label}长度不能少于{minLength}',
-			maxLength: '{label}长度不能超过{maxLength}',
-			range: '{label}必须介于{minLength}和{maxLength}之间'
-		},
-		number: {
-			minimum: '{label}不能小于{minimum}',
-			maximum: '{label}不能大于{maximum}',
-			exclusiveMinimum: '{label}不能小于等于{minimum}',
-			exclusiveMaximum: '{label}不能大于等于{maximum}',
-			range: '{label}必须介于{minimum}and{maximum}之间'
-		},
-		pattern: {
-			mismatch: '{label}格式不匹配'
-		}
-	};
-}
-
-
-SchemaValidator.message = new Message();
-
-export default SchemaValidator

+ 0 - 6
node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/en.json

@@ -1,6 +0,0 @@
-{
-	"uni-goods-nav.options.shop": "shop",
-	"uni-goods-nav.options.cart": "cart",
-	"uni-goods-nav.buttonGroup.addToCart": "add to cart",
-	"uni-goods-nav.buttonGroup.buyNow": "buy now"
-}

+ 0 - 8
node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 6
node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hans.json

@@ -1,6 +0,0 @@
-{
-	"uni-goods-nav.options.shop": "店铺",
-	"uni-goods-nav.options.cart": "购物车",
-	"uni-goods-nav.buttonGroup.addToCart": "加入购物车",
-	"uni-goods-nav.buttonGroup.buyNow": "立即购买"
-}

+ 0 - 6
node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hant.json

@@ -1,6 +0,0 @@
-{
-	"uni-goods-nav.options.shop": "店鋪",
-	"uni-goods-nav.options.cart": "購物車",
-	"uni-goods-nav.buttonGroup.addToCart": "加入購物車",
-	"uni-goods-nav.buttonGroup.buyNow": "立即購買"
-}

+ 0 - 229
node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/uni-goods-nav.vue

@@ -1,229 +0,0 @@
-<template>
-	<view class="uni-goods-nav">
-		<!-- 底部占位 -->
-		<view class="uni-tab__seat" />
-		<view class="uni-tab__cart-box flex">
-			<view class="flex uni-tab__cart-sub-left">
-				<view v-for="(item,index) in options" :key="index" class="flex uni-tab__cart-button-left uni-tab__shop-cart" @click="onClick(index,item)">
-					<view class="uni-tab__icon">
-						<uni-icons :type="item.icon" size="20" color="#646566"></uni-icons>
-						<!-- <image class="image" :src="item.icon" mode="widthFix" /> -->
-					</view>
-					<text class="uni-tab__text">{{ item.text }}</text>
-					<view class="flex uni-tab__dot-box">
-						<text v-if="item.info" :class="{ 'uni-tab__dots': item.info > 9 }" class="uni-tab__dot " :style="{'backgroundColor':item.infoBackgroundColor?item.infoBackgroundColor:'#ff0000',
-						color:item.infoColor?item.infoColor:'#fff'
-						}">{{ item.info }}</text>
-					</view>
-				</view>
-			</view>
-			<view :class="{'uni-tab__right':fill}" class="flex uni-tab__cart-sub-right ">
-				<view v-for="(item,index) in buttonGroup" :key="index" :style="{background:item.backgroundColor,color:item.color}"
-				 class="flex uni-tab__cart-button-right" @click="buttonClick(index,item)"><text :style="{color:item.color}" class="uni-tab__cart-button-right-text">{{ item.text }}</text></view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-	initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {	t	} = initVueI18n(messages)
-	/**
-	 * GoodsNav 商品导航
-	 * @description 商品加入购物车、立即购买等
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=865
-	 * @property {Array} options 组件参数
-	 * @property {Array} buttonGroup 组件按钮组参数
-	 * @property {Boolean} fill = [true | false] 组件按钮组参数
-	 * @property {Boolean} stat 是否开启统计功能
-	 * @event {Function} click 左侧点击事件
-	 * @event {Function} buttonClick 右侧按钮组点击事件
-	 * @example <uni-goods-nav :fill="true"  options="" buttonGroup="buttonGroup"  @click="" @buttonClick="" />
-	 */
-	export default {
-		name: 'UniGoodsNav',
-		emits:['click','buttonClick'],
-		props: {
-			options: {
-				type: Array,
-				default () {
-					return [{
-						icon: 'shop',
-						text: t("uni-goods-nav.options.shop"),
-					}, {
-						icon: 'cart',
-						text: t("uni-goods-nav.options.cart")
-					}]
-				}
-			},
-			buttonGroup: {
-				type: Array,
-				default () {
-					return [{
-							text: t("uni-goods-nav.buttonGroup.addToCart"),
-							backgroundColor: 'linear-gradient(90deg, #FFCD1E, #FF8A18)',
-							color: '#fff'
-						},
-						{
-							text: t("uni-goods-nav.buttonGroup.buyNow"),
-							backgroundColor: 'linear-gradient(90deg, #FE6035, #EF1224)',
-							color: '#fff'
-						}
-					]
-				}
-			},
-			fill: {
-				type: Boolean,
-				default: false
-			},
-			stat:{
-				type: Boolean,
-				default: false
-			}
-		},
-		methods: {
-			onClick(index, item) {
-				this.$emit('click', {
-					index,
-					content: item,
-				})
-			},
-			buttonClick(index, item) {
-				if (uni.report && this.stat) {
-					uni.report(item.text, item.text)
-				}
-				this.$emit('buttonClick', {
-					index,
-					content: item
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.flex {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-goods-nav {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-	}
-
-	.uni-tab__cart-box {
-		flex: 1;
-		height: 50px;
-		background-color: #fff;
-		z-index: 900;
-	}
-
-	.uni-tab__cart-sub-left {
-		padding: 0 5px;
-	}
-
-	.uni-tab__cart-sub-right {
-		flex: 1;
-	}
-
-	.uni-tab__right {
-		margin: 5px 0;
-		margin-right: 10px;
-		border-radius: 100px;
-		overflow: hidden;
-	}
-
-	.uni-tab__cart-button-left {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		// flex: 1;
-		position: relative;
-		justify-content: center;
-		align-items: center;
-		flex-direction: column;
-		margin: 0 10px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-tab__icon {
-		width: 18px;
-		height: 18px;
-	}
-
-	.image {
-		width: 18px;
-		height: 18px;
-	}
-
-	.uni-tab__text {
-		margin-top: 3px;
-		font-size: 12px;
-		color: #646566;
-	}
-
-	.uni-tab__cart-button-right {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-		/* #endif */
-		flex: 1;
-		justify-content: center;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-tab__cart-button-right-text {
-		font-size: 14px;
-		color: #fff;
-	}
-
-	.uni-tab__cart-button-right:active {
-		opacity: 0.7;
-	}
-
-	.uni-tab__dot-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-		/* #endif */
-		position: absolute;
-		right: -2px;
-		top: 2px;
-		justify-content: center;
-		align-items: center;
-		// width: 0;
-		// height: 0;
-	}
-
-	.uni-tab__dot {
-		// width: 30rpx;
-		// height: 30rpx;
-		padding: 0 4px;
-		line-height: 15px;
-		color: #ffffff;
-		text-align: center;
-		font-size: 12px;
-		background-color: #ff0000;
-		border-radius: 15px;
-	}
-
-	.uni-tab__dots {
-		padding: 0 4px;
-		// width: auto;
-		border-radius: 15px;
-	}
-</style>

+ 0 - 127
node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue

@@ -1,127 +0,0 @@
-<template>
-	<view v-if="width" :style="'width:'+width+';'+(square?'height:'+width:'')" class="uni-grid-item">
-		<view :class="{ 'uni-grid-item--border': showBorder,  'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }"
-		 :style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }"
-		 class="uni-grid-item__box" @click="_onClick">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * GridItem 宫格
-	 * @description 宫格组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=27
-	 * @property {Number} index 子组件的唯一标识 ,点击gird会返回当前的标识
-	 */
-	export default {
-		name: 'UniGridItem',
-		inject: ['grid'],
-		props: {
-			index: {
-				type: Number,
-				default: 0
-			}
-		},
-		data() {
-			return {
-				column: 0,
-				showBorder: true,
-				square: true,
-				highlight: true,
-				left: 0,
-				top: 0,
-				openNum: 2,
-				width: 0,
-				borderColor: '#e5e5e5'
-			}
-		},
-		created() {
-			this.column = this.grid.column
-			this.showBorder = this.grid.showBorder
-			this.square = this.grid.square
-			this.highlight = this.grid.highlight
-			this.top = this.hor === 0 ? this.grid.hor : this.hor
-			this.left = this.ver === 0 ? this.grid.ver : this.ver
-			this.borderColor = this.grid.borderColor
-			this.grid.children.push(this)
-			// this.grid.init()
-			this.width = this.grid.width
-		},
-		beforeDestroy() {
-			this.grid.children.forEach((item, index) => {
-				if (item === this) {
-					this.grid.children.splice(index, 1)
-				}
-			})
-		},
-		methods: {
-			_onClick() {
-				this.grid.change({
-					detail: {
-						index: this.index
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-grid-item {
-		/* #ifndef APP-NVUE */
-		height: 100%;
-		display: flex;
-		/* #endif */
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-grid-item__box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		width: 100%;
-		/* #endif */
-		position: relative;
-		flex: 1;
-		flex-direction: column;
-		// justify-content: center;
-		// align-items: center;
-	}
-
-	.uni-grid-item--border {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-bottom-color: #D2D2D2;
-		border-bottom-style: solid;
-		border-bottom-width: 0.5px;
-		border-right-color: #D2D2D2;
-		border-right-style: solid;
-		border-right-width: 0.5px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		z-index: 0;
-		border-bottom: 1px #D2D2D2 solid;
-		border-right: 1px #D2D2D2 solid;
-		/* #endif */
-	}
-	.uni-grid-item--border-top {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-top-color: #D2D2D2;
-		border-top-style: solid;
-		border-top-width: 0.5px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		border-top: 1px #D2D2D2 solid;
-		z-index: 0;
-		/* #endif */
-	}
-
-
-	.uni-highlight:active {
-		background-color: #f1f1f1;
-	}
-</style>

+ 0 - 142
node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue

@@ -1,142 +0,0 @@
-<template>
-	<view class="uni-grid-wrap">
-		<view :id="elId" ref="uni-grid" class="uni-grid" :class="{ 'uni-grid--border': showBorder }" :style="{ 'border-left-color':borderColor}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const dom = uni.requireNativePlugin('dom');
-	// #endif
-
-	/**
-	 * Grid 宫格
-	 * @description 宫格组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=27
-	 * @property {Number} column 每列显示个数
-	 * @property {String} borderColor 边框颜色
-	 * @property {Boolean} showBorder 是否显示边框
-	 * @property {Boolean} square 是否方形显示
-	 * @property {Boolean} Boolean 点击背景是否高亮
-	 * @event {Function} change 点击 grid 触发,e={detail:{index:0}},index 为当前点击 gird 下标
-	 */
-	export default {
-		name: 'UniGrid',
-		emits:['change'],
-		props: {
-			// 每列显示个数
-			column: {
-				type: Number,
-				default: 3
-			},
-			// 是否显示边框
-			showBorder: {
-				type: Boolean,
-				default: true
-			},
-			// 边框颜色
-			borderColor: {
-				type: String,
-				default: '#D2D2D2'
-			},
-			// 是否正方形显示,默认为 true
-			square: {
-				type: Boolean,
-				default: true
-			},
-			highlight: {
-				type: Boolean,
-				default: true
-			}
-		},
-		provide() {
-			return {
-				grid: this
-			}
-		},
-		data() {
-			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
-			return {
-				elId,
-				width: 0
-			}
-		},
-		created() {
-			this.children = []
-		},
-		mounted() {
-			this.$nextTick(()=>{
-				this.init()
-			})
-		},
-		methods: {
-			init() {
-				setTimeout(() => {
-					this._getSize((width) => {
-						this.children.forEach((item, index) => {
-							item.width = width
-						})
-					})
-				}, 50)
-			},
-			change(e) {
-				this.$emit('change', e)
-			},
-			_getSize(fn) {
-				// #ifndef APP-NVUE
-				uni.createSelectorQuery()
-					.in(this)
-					.select(`#${this.elId}`)
-					.boundingClientRect()
-					.exec(ret => {
-						this.width = parseInt((ret[0].width - 1) / this.column) + 'px'
-						fn(this.width)
-					})
-				// #endif
-				// #ifdef APP-NVUE
-				dom.getComponentRect(this.$refs['uni-grid'], (ret) => {
-					this.width = parseInt((ret.size.width - 1) / this.column) + 'px'
-					fn(this.width)
-				})
-				// #endif
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-grid-wrap {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: column;
-		/* #ifdef H5 */
-		width: 100%;
-		/* #endif */
-	}
-
-	.uni-grid {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		// flex: 1;
-		flex-direction: row;
-		flex-wrap: wrap;
-	}
-
-	.uni-grid--border {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-left-color: #D2D2D2;
-		border-left-style: solid;
-		border-left-width: 0.5px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		z-index: 1;
-		border-left: 1px #D2D2D2 solid;
-		/* #endif */
-	}
-</style>

+ 0 - 134
node_modules/@dcloudio/uni-ui/lib/uni-group/uni-group.vue

@@ -1,134 +0,0 @@
-<template>
-	<view class="uni-group" :class="['uni-group--'+mode ,margin?'group-margin':'']" :style="{marginTop: `${top}px` }">
-		<slot name="title">
-			<view v-if="title" class="uni-group__title" :style="{'padding-left':border?'30px':'15px'}">
-				<text class="uni-group__title-text">{{ title }}</text>
-			</view>
-		</slot>
-		<view class="uni-group__content" :class="{'group-conent-padding':border}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Group 分组
-	 * @description 表单字段分组
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3281
-	 * @property {String} title 主标题
-	 * @property {Number} top 分组间隔
-	 * @property {Number} mode 模式
-	 */
-	export default {
-		name: 'uniGroup',
-		emits:['click'],
-		props: {
-			title: {
-				type: String,
-				default: ''
-			},
-			top: {
-				type: [Number, String],
-				default: 10
-			},
-			mode: {
-				type: String,
-				default: 'default'
-			},
-			stat:{
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				margin: false,
-				border: false
-			}
-		},
-		watch: {
-			title(newVal) {
-				if (uni.report && this.stat && newVal !== '') {
-					uni.report('title', newVal)
-				}
-			}
-		},
-		created() {
-			this.form = this.getForm()
-			if (this.form) {
-				this.margin = true
-				this.border = this.form.border
-			}
-		},
-		methods: {
-			/**
-			 * 获取父元素实例
-			 */
-			getForm() {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== 'uniForms') {
-					parent = parent.$parent;
-					if (!parent) return false
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-			onClick() {
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	.uni-group {
-		background: #fff;
-		margin-top: 10px;
-		// border: 1px red solid;
-	}
-
-	.group-margin {
-		// margin: 0 -15px;
-	}
-
-	.uni-group__title {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		padding-left: 15px;
-		height: 40px;
-		background-color: #eee;
-		font-weight: normal;
-		color: #666;
-	}
-
-	.uni-group__content {
-		padding: 15px;
-		// padding-bottom: 5px;
-		// background-color: #FFF;
-	}
-
-	.group-conent-padding {
-		padding: 0 15px;
-	}
-
-	.uni-group__title-text {
-		font-size: 14px;
-		color: #666;
-	}
-
-	.distraction {
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-group--card {
-		margin: 10px;
-		border-radius: 5px;
-		overflow: hidden;
-		box-shadow: 0 0 5px 1px rgba($color: #000000, $alpha: 0.08);
-	}
-</style>

+ 0 - 1169
node_modules/@dcloudio/uni-ui/lib/uni-icons/icons.js

@@ -1,1169 +0,0 @@
-export default {
-  "id": "2852637",
-  "name": "uniui图标库",
-  "font_family": "uniicons",
-  "css_prefix_text": "uniui-",
-  "description": "",
-  "glyphs": [
-    {
-      "icon_id": "25027049",
-      "name": "yanse",
-      "font_class": "color",
-      "unicode": "e6cf",
-      "unicode_decimal": 59087
-    },
-    {
-      "icon_id": "25027048",
-      "name": "wallet",
-      "font_class": "wallet",
-      "unicode": "e6b1",
-      "unicode_decimal": 59057
-    },
-    {
-      "icon_id": "25015720",
-      "name": "settings-filled",
-      "font_class": "settings-filled",
-      "unicode": "e6ce",
-      "unicode_decimal": 59086
-    },
-    {
-      "icon_id": "25015434",
-      "name": "shimingrenzheng-filled",
-      "font_class": "auth-filled",
-      "unicode": "e6cc",
-      "unicode_decimal": 59084
-    },
-    {
-      "icon_id": "24934246",
-      "name": "shop-filled",
-      "font_class": "shop-filled",
-      "unicode": "e6cd",
-      "unicode_decimal": 59085
-    },
-    {
-      "icon_id": "24934159",
-      "name": "staff-filled-01",
-      "font_class": "staff-filled",
-      "unicode": "e6cb",
-      "unicode_decimal": 59083
-    },
-    {
-      "icon_id": "24932461",
-      "name": "VIP-filled",
-      "font_class": "vip-filled",
-      "unicode": "e6c6",
-      "unicode_decimal": 59078
-    },
-    {
-      "icon_id": "24932462",
-      "name": "plus_circle_fill",
-      "font_class": "plus-filled",
-      "unicode": "e6c7",
-      "unicode_decimal": 59079
-    },
-    {
-      "icon_id": "24932463",
-      "name": "folder_add-filled",
-      "font_class": "folder-add-filled",
-      "unicode": "e6c8",
-      "unicode_decimal": 59080
-    },
-    {
-      "icon_id": "24932464",
-      "name": "yanse-filled",
-      "font_class": "color-filled",
-      "unicode": "e6c9",
-      "unicode_decimal": 59081
-    },
-    {
-      "icon_id": "24932465",
-      "name": "tune-filled",
-      "font_class": "tune-filled",
-      "unicode": "e6ca",
-      "unicode_decimal": 59082
-    },
-    {
-      "icon_id": "24932455",
-      "name": "a-rilidaka-filled",
-      "font_class": "calendar-filled",
-      "unicode": "e6c0",
-      "unicode_decimal": 59072
-    },
-    {
-      "icon_id": "24932456",
-      "name": "notification-filled",
-      "font_class": "notification-filled",
-      "unicode": "e6c1",
-      "unicode_decimal": 59073
-    },
-    {
-      "icon_id": "24932457",
-      "name": "wallet-filled",
-      "font_class": "wallet-filled",
-      "unicode": "e6c2",
-      "unicode_decimal": 59074
-    },
-    {
-      "icon_id": "24932458",
-      "name": "paihangbang-filled",
-      "font_class": "medal-filled",
-      "unicode": "e6c3",
-      "unicode_decimal": 59075
-    },
-    {
-      "icon_id": "24932459",
-      "name": "gift-filled",
-      "font_class": "gift-filled",
-      "unicode": "e6c4",
-      "unicode_decimal": 59076
-    },
-    {
-      "icon_id": "24932460",
-      "name": "fire-filled",
-      "font_class": "fire-filled",
-      "unicode": "e6c5",
-      "unicode_decimal": 59077
-    },
-    {
-      "icon_id": "24928001",
-      "name": "refreshempty",
-      "font_class": "refreshempty",
-      "unicode": "e6bf",
-      "unicode_decimal": 59071
-    },
-    {
-      "icon_id": "24926853",
-      "name": "location-ellipse",
-      "font_class": "location-filled",
-      "unicode": "e6af",
-      "unicode_decimal": 59055
-    },
-    {
-      "icon_id": "24926735",
-      "name": "person-filled",
-      "font_class": "person-filled",
-      "unicode": "e69d",
-      "unicode_decimal": 59037
-    },
-    {
-      "icon_id": "24926703",
-      "name": "personadd-filled",
-      "font_class": "personadd-filled",
-      "unicode": "e698",
-      "unicode_decimal": 59032
-    },
-    {
-      "icon_id": "24923351",
-      "name": "back",
-      "font_class": "back",
-      "unicode": "e6b9",
-      "unicode_decimal": 59065
-    },
-    {
-      "icon_id": "24923352",
-      "name": "forward",
-      "font_class": "forward",
-      "unicode": "e6ba",
-      "unicode_decimal": 59066
-    },
-    {
-      "icon_id": "24923353",
-      "name": "arrowthinright",
-      "font_class": "arrow-right",
-      "unicode": "e6bb",
-      "unicode_decimal": 59067
-    },
-		{
-		  "icon_id": "24923353",
-		  "name": "arrowthinright",
-		  "font_class": "arrowthinright",
-		  "unicode": "e6bb",
-		  "unicode_decimal": 59067
-		},
-    {
-      "icon_id": "24923354",
-      "name": "arrowthinleft",
-      "font_class": "arrow-left",
-      "unicode": "e6bc",
-      "unicode_decimal": 59068
-    },
-		{
-		  "icon_id": "24923354",
-		  "name": "arrowthinleft",
-		  "font_class": "arrowthinleft",
-		  "unicode": "e6bc",
-		  "unicode_decimal": 59068
-		},
-    {
-      "icon_id": "24923355",
-      "name": "arrowthinup",
-      "font_class": "arrow-up",
-      "unicode": "e6bd",
-      "unicode_decimal": 59069
-    },
-		{
-		  "icon_id": "24923355",
-		  "name": "arrowthinup",
-		  "font_class": "arrowthinup",
-		  "unicode": "e6bd",
-		  "unicode_decimal": 59069
-		},
-    {
-      "icon_id": "24923356",
-      "name": "arrowthindown",
-      "font_class": "arrow-down",
-      "unicode": "e6be",
-      "unicode_decimal": 59070
-    },{
-      "icon_id": "24923356",
-      "name": "arrowthindown",
-      "font_class": "arrowthindown",
-      "unicode": "e6be",
-      "unicode_decimal": 59070
-    },
-    {
-      "icon_id": "24923349",
-      "name": "arrowdown",
-      "font_class": "bottom",
-      "unicode": "e6b8",
-      "unicode_decimal": 59064
-    },{
-      "icon_id": "24923349",
-      "name": "arrowdown",
-      "font_class": "arrowdown",
-      "unicode": "e6b8",
-      "unicode_decimal": 59064
-    },
-    {
-      "icon_id": "24923346",
-      "name": "arrowright",
-      "font_class": "right",
-      "unicode": "e6b5",
-      "unicode_decimal": 59061
-    },
-		{
-		  "icon_id": "24923346",
-		  "name": "arrowright",
-		  "font_class": "arrowright",
-		  "unicode": "e6b5",
-		  "unicode_decimal": 59061
-		},
-    {
-      "icon_id": "24923347",
-      "name": "arrowup",
-      "font_class": "top",
-      "unicode": "e6b6",
-      "unicode_decimal": 59062
-    },
-		{
-		  "icon_id": "24923347",
-		  "name": "arrowup",
-		  "font_class": "arrowup",
-		  "unicode": "e6b6",
-		  "unicode_decimal": 59062
-		},
-    {
-      "icon_id": "24923348",
-      "name": "arrowleft",
-      "font_class": "left",
-      "unicode": "e6b7",
-      "unicode_decimal": 59063
-    },
-		{
-		  "icon_id": "24923348",
-		  "name": "arrowleft",
-		  "font_class": "arrowleft",
-		  "unicode": "e6b7",
-		  "unicode_decimal": 59063
-		},
-    {
-      "icon_id": "24923334",
-      "name": "eye",
-      "font_class": "eye",
-      "unicode": "e651",
-      "unicode_decimal": 58961
-    },
-    {
-      "icon_id": "24923335",
-      "name": "eye-filled",
-      "font_class": "eye-filled",
-      "unicode": "e66a",
-      "unicode_decimal": 58986
-    },
-    {
-      "icon_id": "24923336",
-      "name": "eye-slash",
-      "font_class": "eye-slash",
-      "unicode": "e6b3",
-      "unicode_decimal": 59059
-    },
-    {
-      "icon_id": "24923337",
-      "name": "eye-slash-filled",
-      "font_class": "eye-slash-filled",
-      "unicode": "e6b4",
-      "unicode_decimal": 59060
-    },
-    {
-      "icon_id": "24923305",
-      "name": "info-filled",
-      "font_class": "info-filled",
-      "unicode": "e649",
-      "unicode_decimal": 58953
-    },
-    {
-      "icon_id": "24923299",
-      "name": "reload-01",
-      "font_class": "reload",
-      "unicode": "e6b2",
-      "unicode_decimal": 59058
-    },
-    {
-      "icon_id": "24923195",
-      "name": "mic_slash_fill",
-      "font_class": "micoff-filled",
-      "unicode": "e6b0",
-      "unicode_decimal": 59056
-    },
-    {
-      "icon_id": "24923165",
-      "name": "map-pin-ellipse",
-      "font_class": "map-pin-ellipse",
-      "unicode": "e6ac",
-      "unicode_decimal": 59052
-    },
-    {
-      "icon_id": "24923166",
-      "name": "map-pin",
-      "font_class": "map-pin",
-      "unicode": "e6ad",
-      "unicode_decimal": 59053
-    },
-    {
-      "icon_id": "24923167",
-      "name": "location",
-      "font_class": "location",
-      "unicode": "e6ae",
-      "unicode_decimal": 59054
-    },
-    {
-      "icon_id": "24923064",
-      "name": "starhalf",
-      "font_class": "starhalf",
-      "unicode": "e683",
-      "unicode_decimal": 59011
-    },
-    {
-      "icon_id": "24923065",
-      "name": "star",
-      "font_class": "star",
-      "unicode": "e688",
-      "unicode_decimal": 59016
-    },
-    {
-      "icon_id": "24923066",
-      "name": "star-filled",
-      "font_class": "star-filled",
-      "unicode": "e68f",
-      "unicode_decimal": 59023
-    },
-    {
-      "icon_id": "24899646",
-      "name": "a-rilidaka",
-      "font_class": "calendar",
-      "unicode": "e6a0",
-      "unicode_decimal": 59040
-    },
-    {
-      "icon_id": "24899647",
-      "name": "fire",
-      "font_class": "fire",
-      "unicode": "e6a1",
-      "unicode_decimal": 59041
-    },
-    {
-      "icon_id": "24899648",
-      "name": "paihangbang",
-      "font_class": "medal",
-      "unicode": "e6a2",
-      "unicode_decimal": 59042
-    },
-    {
-      "icon_id": "24899649",
-      "name": "font",
-      "font_class": "font",
-      "unicode": "e6a3",
-      "unicode_decimal": 59043
-    },
-    {
-      "icon_id": "24899650",
-      "name": "gift",
-      "font_class": "gift",
-      "unicode": "e6a4",
-      "unicode_decimal": 59044
-    },
-    {
-      "icon_id": "24899651",
-      "name": "link",
-      "font_class": "link",
-      "unicode": "e6a5",
-      "unicode_decimal": 59045
-    },
-    {
-      "icon_id": "24899652",
-      "name": "notification",
-      "font_class": "notification",
-      "unicode": "e6a6",
-      "unicode_decimal": 59046
-    },
-    {
-      "icon_id": "24899653",
-      "name": "staff",
-      "font_class": "staff",
-      "unicode": "e6a7",
-      "unicode_decimal": 59047
-    },
-    {
-      "icon_id": "24899654",
-      "name": "VIP",
-      "font_class": "vip",
-      "unicode": "e6a8",
-      "unicode_decimal": 59048
-    },
-    {
-      "icon_id": "24899655",
-      "name": "folder_add",
-      "font_class": "folder-add",
-      "unicode": "e6a9",
-      "unicode_decimal": 59049
-    },
-    {
-      "icon_id": "24899656",
-      "name": "tune",
-      "font_class": "tune",
-      "unicode": "e6aa",
-      "unicode_decimal": 59050
-    },
-    {
-      "icon_id": "24899657",
-      "name": "shimingrenzheng",
-      "font_class": "auth",
-      "unicode": "e6ab",
-      "unicode_decimal": 59051
-    },
-    {
-      "icon_id": "24899565",
-      "name": "person",
-      "font_class": "person",
-      "unicode": "e699",
-      "unicode_decimal": 59033
-    },
-    {
-      "icon_id": "24899566",
-      "name": "email-filled",
-      "font_class": "email-filled",
-      "unicode": "e69a",
-      "unicode_decimal": 59034
-    },
-    {
-      "icon_id": "24899567",
-      "name": "phone-filled",
-      "font_class": "phone-filled",
-      "unicode": "e69b",
-      "unicode_decimal": 59035
-    },
-    {
-      "icon_id": "24899568",
-      "name": "phone",
-      "font_class": "phone",
-      "unicode": "e69c",
-      "unicode_decimal": 59036
-    },
-    {
-      "icon_id": "24899570",
-      "name": "email",
-      "font_class": "email",
-      "unicode": "e69e",
-      "unicode_decimal": 59038
-    },
-    {
-      "icon_id": "24899571",
-      "name": "personadd",
-      "font_class": "personadd",
-      "unicode": "e69f",
-      "unicode_decimal": 59039
-    },
-    {
-      "icon_id": "24899558",
-      "name": "chatboxes-filled",
-      "font_class": "chatboxes-filled",
-      "unicode": "e692",
-      "unicode_decimal": 59026
-    },
-    {
-      "icon_id": "24899559",
-      "name": "contact",
-      "font_class": "contact",
-      "unicode": "e693",
-      "unicode_decimal": 59027
-    },
-    {
-      "icon_id": "24899560",
-      "name": "chatbubble-filled",
-      "font_class": "chatbubble-filled",
-      "unicode": "e694",
-      "unicode_decimal": 59028
-    },
-    {
-      "icon_id": "24899561",
-      "name": "contact-filled",
-      "font_class": "contact-filled",
-      "unicode": "e695",
-      "unicode_decimal": 59029
-    },
-    {
-      "icon_id": "24899562",
-      "name": "chatboxes",
-      "font_class": "chatboxes",
-      "unicode": "e696",
-      "unicode_decimal": 59030
-    },
-    {
-      "icon_id": "24899563",
-      "name": "chatbubble",
-      "font_class": "chatbubble",
-      "unicode": "e697",
-      "unicode_decimal": 59031
-    },
-    {
-      "icon_id": "24881290",
-      "name": "upload-filled",
-      "font_class": "upload-filled",
-      "unicode": "e68e",
-      "unicode_decimal": 59022
-    },
-    {
-      "icon_id": "24881292",
-      "name": "upload",
-      "font_class": "upload",
-      "unicode": "e690",
-      "unicode_decimal": 59024
-    },
-    {
-      "icon_id": "24881293",
-      "name": "weixin",
-      "font_class": "weixin",
-      "unicode": "e691",
-      "unicode_decimal": 59025
-    },
-    {
-      "icon_id": "24881274",
-      "name": "compose",
-      "font_class": "compose",
-      "unicode": "e67f",
-      "unicode_decimal": 59007
-    },
-    {
-      "icon_id": "24881275",
-      "name": "qq",
-      "font_class": "qq",
-      "unicode": "e680",
-      "unicode_decimal": 59008
-    },
-    {
-      "icon_id": "24881276",
-      "name": "download-filled",
-      "font_class": "download-filled",
-      "unicode": "e681",
-      "unicode_decimal": 59009
-    },
-    {
-      "icon_id": "24881277",
-      "name": "pengyouquan",
-      "font_class": "pyq",
-      "unicode": "e682",
-      "unicode_decimal": 59010
-    },
-    {
-      "icon_id": "24881279",
-      "name": "sound",
-      "font_class": "sound",
-      "unicode": "e684",
-      "unicode_decimal": 59012
-    },
-    {
-      "icon_id": "24881280",
-      "name": "trash-filled",
-      "font_class": "trash-filled",
-      "unicode": "e685",
-      "unicode_decimal": 59013
-    },
-    {
-      "icon_id": "24881281",
-      "name": "sound-filled",
-      "font_class": "sound-filled",
-      "unicode": "e686",
-      "unicode_decimal": 59014
-    },
-    {
-      "icon_id": "24881282",
-      "name": "trash",
-      "font_class": "trash",
-      "unicode": "e687",
-      "unicode_decimal": 59015
-    },
-    {
-      "icon_id": "24881284",
-      "name": "videocam-filled",
-      "font_class": "videocam-filled",
-      "unicode": "e689",
-      "unicode_decimal": 59017
-    },
-    {
-      "icon_id": "24881285",
-      "name": "spinner-cycle",
-      "font_class": "spinner-cycle",
-      "unicode": "e68a",
-      "unicode_decimal": 59018
-    },
-    {
-      "icon_id": "24881286",
-      "name": "weibo",
-      "font_class": "weibo",
-      "unicode": "e68b",
-      "unicode_decimal": 59019
-    },
-    {
-      "icon_id": "24881288",
-      "name": "videocam",
-      "font_class": "videocam",
-      "unicode": "e68c",
-      "unicode_decimal": 59020
-    },
-    {
-      "icon_id": "24881289",
-      "name": "download",
-      "font_class": "download",
-      "unicode": "e68d",
-      "unicode_decimal": 59021
-    },
-    {
-      "icon_id": "24879601",
-      "name": "help",
-      "font_class": "help",
-      "unicode": "e679",
-      "unicode_decimal": 59001
-    },
-    {
-      "icon_id": "24879602",
-      "name": "navigate-filled",
-      "font_class": "navigate-filled",
-      "unicode": "e67a",
-      "unicode_decimal": 59002
-    },
-    {
-      "icon_id": "24879603",
-      "name": "plusempty",
-      "font_class": "plusempty",
-      "unicode": "e67b",
-      "unicode_decimal": 59003
-    },
-    {
-      "icon_id": "24879604",
-      "name": "smallcircle",
-      "font_class": "smallcircle",
-      "unicode": "e67c",
-      "unicode_decimal": 59004
-    },
-    {
-      "icon_id": "24879605",
-      "name": "minus-filled",
-      "font_class": "minus-filled",
-      "unicode": "e67d",
-      "unicode_decimal": 59005
-    },
-    {
-      "icon_id": "24879606",
-      "name": "micoff",
-      "font_class": "micoff",
-      "unicode": "e67e",
-      "unicode_decimal": 59006
-    },
-    {
-      "icon_id": "24879588",
-      "name": "closeempty",
-      "font_class": "closeempty",
-      "unicode": "e66c",
-      "unicode_decimal": 58988
-    },
-    {
-      "icon_id": "24879589",
-      "name": "clear",
-      "font_class": "clear",
-      "unicode": "e66d",
-      "unicode_decimal": 58989
-    },
-    {
-      "icon_id": "24879590",
-      "name": "navigate",
-      "font_class": "navigate",
-      "unicode": "e66e",
-      "unicode_decimal": 58990
-    },
-    {
-      "icon_id": "24879591",
-      "name": "minus",
-      "font_class": "minus",
-      "unicode": "e66f",
-      "unicode_decimal": 58991
-    },
-    {
-      "icon_id": "24879592",
-      "name": "image",
-      "font_class": "image",
-      "unicode": "e670",
-      "unicode_decimal": 58992
-    },
-    {
-      "icon_id": "24879593",
-      "name": "mic",
-      "font_class": "mic",
-      "unicode": "e671",
-      "unicode_decimal": 58993
-    },
-    {
-      "icon_id": "24879594",
-      "name": "paperplane",
-      "font_class": "paperplane",
-      "unicode": "e672",
-      "unicode_decimal": 58994
-    },
-    {
-      "icon_id": "24879595",
-      "name": "close",
-      "font_class": "close",
-      "unicode": "e673",
-      "unicode_decimal": 58995
-    },
-    {
-      "icon_id": "24879596",
-      "name": "help-filled",
-      "font_class": "help-filled",
-      "unicode": "e674",
-      "unicode_decimal": 58996
-    },
-    {
-      "icon_id": "24879597",
-      "name": "plus-filled",
-      "font_class": "paperplane-filled",
-      "unicode": "e675",
-      "unicode_decimal": 58997
-    },
-    {
-      "icon_id": "24879598",
-      "name": "plus",
-      "font_class": "plus",
-      "unicode": "e676",
-      "unicode_decimal": 58998
-    },
-    {
-      "icon_id": "24879599",
-      "name": "mic-filled",
-      "font_class": "mic-filled",
-      "unicode": "e677",
-      "unicode_decimal": 58999
-    },
-    {
-      "icon_id": "24879600",
-      "name": "image-filled",
-      "font_class": "image-filled",
-      "unicode": "e678",
-      "unicode_decimal": 59000
-    },
-    {
-      "icon_id": "24855900",
-      "name": "locked-filled",
-      "font_class": "locked-filled",
-      "unicode": "e668",
-      "unicode_decimal": 58984
-    },
-    {
-      "icon_id": "24855901",
-      "name": "info",
-      "font_class": "info",
-      "unicode": "e669",
-      "unicode_decimal": 58985
-    },
-    {
-      "icon_id": "24855903",
-      "name": "locked",
-      "font_class": "locked",
-      "unicode": "e66b",
-      "unicode_decimal": 58987
-    },
-    {
-      "icon_id": "24855884",
-      "name": "camera-filled",
-      "font_class": "camera-filled",
-      "unicode": "e658",
-      "unicode_decimal": 58968
-    },
-    {
-      "icon_id": "24855885",
-      "name": "chat-filled",
-      "font_class": "chat-filled",
-      "unicode": "e659",
-      "unicode_decimal": 58969
-    },
-    {
-      "icon_id": "24855886",
-      "name": "camera",
-      "font_class": "camera",
-      "unicode": "e65a",
-      "unicode_decimal": 58970
-    },
-    {
-      "icon_id": "24855887",
-      "name": "circle",
-      "font_class": "circle",
-      "unicode": "e65b",
-      "unicode_decimal": 58971
-    },
-    {
-      "icon_id": "24855888",
-      "name": "checkmarkempty",
-      "font_class": "checkmarkempty",
-      "unicode": "e65c",
-      "unicode_decimal": 58972
-    },
-    {
-      "icon_id": "24855889",
-      "name": "chat",
-      "font_class": "chat",
-      "unicode": "e65d",
-      "unicode_decimal": 58973
-    },
-    {
-      "icon_id": "24855890",
-      "name": "circle-filled",
-      "font_class": "circle-filled",
-      "unicode": "e65e",
-      "unicode_decimal": 58974
-    },
-    {
-      "icon_id": "24855891",
-      "name": "flag",
-      "font_class": "flag",
-      "unicode": "e65f",
-      "unicode_decimal": 58975
-    },
-    {
-      "icon_id": "24855892",
-      "name": "flag-filled",
-      "font_class": "flag-filled",
-      "unicode": "e660",
-      "unicode_decimal": 58976
-    },
-    {
-      "icon_id": "24855893",
-      "name": "gear-filled",
-      "font_class": "gear-filled",
-      "unicode": "e661",
-      "unicode_decimal": 58977
-    },
-    {
-      "icon_id": "24855894",
-      "name": "home",
-      "font_class": "home",
-      "unicode": "e662",
-      "unicode_decimal": 58978
-    },
-    {
-      "icon_id": "24855895",
-      "name": "home-filled",
-      "font_class": "home-filled",
-      "unicode": "e663",
-      "unicode_decimal": 58979
-    },
-    {
-      "icon_id": "24855896",
-      "name": "gear",
-      "font_class": "gear",
-      "unicode": "e664",
-      "unicode_decimal": 58980
-    },
-    {
-      "icon_id": "24855897",
-      "name": "smallcircle-filled",
-      "font_class": "smallcircle-filled",
-      "unicode": "e665",
-      "unicode_decimal": 58981
-    },
-    {
-      "icon_id": "24855898",
-      "name": "map-filled",
-      "font_class": "map-filled",
-      "unicode": "e666",
-      "unicode_decimal": 58982
-    },
-    {
-      "icon_id": "24855899",
-      "name": "map",
-      "font_class": "map",
-      "unicode": "e667",
-      "unicode_decimal": 58983
-    },
-    {
-      "icon_id": "24855825",
-      "name": "refresh-filled",
-      "font_class": "refresh-filled",
-      "unicode": "e656",
-      "unicode_decimal": 58966
-    },
-    {
-      "icon_id": "24855826",
-      "name": "refresh",
-      "font_class": "refresh",
-      "unicode": "e657",
-      "unicode_decimal": 58967
-    },
-    {
-      "icon_id": "24855808",
-      "name": "cloud-upload",
-      "font_class": "cloud-upload",
-      "unicode": "e645",
-      "unicode_decimal": 58949
-    },
-    {
-      "icon_id": "24855809",
-      "name": "cloud-download-filled",
-      "font_class": "cloud-download-filled",
-      "unicode": "e646",
-      "unicode_decimal": 58950
-    },
-    {
-      "icon_id": "24855810",
-      "name": "cloud-download",
-      "font_class": "cloud-download",
-      "unicode": "e647",
-      "unicode_decimal": 58951
-    },
-    {
-      "icon_id": "24855811",
-      "name": "cloud-upload-filled",
-      "font_class": "cloud-upload-filled",
-      "unicode": "e648",
-      "unicode_decimal": 58952
-    },
-    {
-      "icon_id": "24855813",
-      "name": "redo",
-      "font_class": "redo",
-      "unicode": "e64a",
-      "unicode_decimal": 58954
-    },
-    {
-      "icon_id": "24855814",
-      "name": "images-filled",
-      "font_class": "images-filled",
-      "unicode": "e64b",
-      "unicode_decimal": 58955
-    },
-    {
-      "icon_id": "24855815",
-      "name": "undo-filled",
-      "font_class": "undo-filled",
-      "unicode": "e64c",
-      "unicode_decimal": 58956
-    },
-    {
-      "icon_id": "24855816",
-      "name": "more",
-      "font_class": "more",
-      "unicode": "e64d",
-      "unicode_decimal": 58957
-    },
-    {
-      "icon_id": "24855817",
-      "name": "more-filled",
-      "font_class": "more-filled",
-      "unicode": "e64e",
-      "unicode_decimal": 58958
-    },
-    {
-      "icon_id": "24855818",
-      "name": "undo",
-      "font_class": "undo",
-      "unicode": "e64f",
-      "unicode_decimal": 58959
-    },
-    {
-      "icon_id": "24855819",
-      "name": "images",
-      "font_class": "images",
-      "unicode": "e650",
-      "unicode_decimal": 58960
-    },
-    {
-      "icon_id": "24855821",
-      "name": "paperclip",
-      "font_class": "paperclip",
-      "unicode": "e652",
-      "unicode_decimal": 58962
-    },
-    {
-      "icon_id": "24855822",
-      "name": "settings",
-      "font_class": "settings",
-      "unicode": "e653",
-      "unicode_decimal": 58963
-    },
-    {
-      "icon_id": "24855823",
-      "name": "search",
-      "font_class": "search",
-      "unicode": "e654",
-      "unicode_decimal": 58964
-    },
-    {
-      "icon_id": "24855824",
-      "name": "redo-filled",
-      "font_class": "redo-filled",
-      "unicode": "e655",
-      "unicode_decimal": 58965
-    },
-    {
-      "icon_id": "24841702",
-      "name": "list",
-      "font_class": "list",
-      "unicode": "e644",
-      "unicode_decimal": 58948
-    },
-    {
-      "icon_id": "24841489",
-      "name": "mail-open-filled",
-      "font_class": "mail-open-filled",
-      "unicode": "e63a",
-      "unicode_decimal": 58938
-    },
-    {
-      "icon_id": "24841491",
-      "name": "hand-thumbsdown-filled",
-      "font_class": "hand-down-filled",
-      "unicode": "e63c",
-      "unicode_decimal": 58940
-    },
-    {
-      "icon_id": "24841492",
-      "name": "hand-thumbsdown",
-      "font_class": "hand-down",
-      "unicode": "e63d",
-      "unicode_decimal": 58941
-    },
-    {
-      "icon_id": "24841493",
-      "name": "hand-thumbsup-filled",
-      "font_class": "hand-up-filled",
-      "unicode": "e63e",
-      "unicode_decimal": 58942
-    },
-    {
-      "icon_id": "24841494",
-      "name": "hand-thumbsup",
-      "font_class": "hand-up",
-      "unicode": "e63f",
-      "unicode_decimal": 58943
-    },
-    {
-      "icon_id": "24841496",
-      "name": "heart-filled",
-      "font_class": "heart-filled",
-      "unicode": "e641",
-      "unicode_decimal": 58945
-    },
-    {
-      "icon_id": "24841498",
-      "name": "mail-open",
-      "font_class": "mail-open",
-      "unicode": "e643",
-      "unicode_decimal": 58947
-    },
-    {
-      "icon_id": "24841488",
-      "name": "heart",
-      "font_class": "heart",
-      "unicode": "e639",
-      "unicode_decimal": 58937
-    },
-    {
-      "icon_id": "24839963",
-      "name": "loop",
-      "font_class": "loop",
-      "unicode": "e633",
-      "unicode_decimal": 58931
-    },
-    {
-      "icon_id": "24839866",
-      "name": "pulldown",
-      "font_class": "pulldown",
-      "unicode": "e632",
-      "unicode_decimal": 58930
-    },
-    {
-      "icon_id": "24813798",
-      "name": "scan",
-      "font_class": "scan",
-      "unicode": "e62a",
-      "unicode_decimal": 58922
-    },
-    {
-      "icon_id": "24813786",
-      "name": "bars",
-      "font_class": "bars",
-      "unicode": "e627",
-      "unicode_decimal": 58919
-    },
-    {
-      "icon_id": "24813788",
-      "name": "cart-filled",
-      "font_class": "cart-filled",
-      "unicode": "e629",
-      "unicode_decimal": 58921
-    },
-    {
-      "icon_id": "24813790",
-      "name": "checkbox",
-      "font_class": "checkbox",
-      "unicode": "e62b",
-      "unicode_decimal": 58923
-    },
-    {
-      "icon_id": "24813791",
-      "name": "checkbox-filled",
-      "font_class": "checkbox-filled",
-      "unicode": "e62c",
-      "unicode_decimal": 58924
-    },
-    {
-      "icon_id": "24813794",
-      "name": "shop",
-      "font_class": "shop",
-      "unicode": "e62f",
-      "unicode_decimal": 58927
-    },
-    {
-      "icon_id": "24813795",
-      "name": "headphones",
-      "font_class": "headphones",
-      "unicode": "e630",
-      "unicode_decimal": 58928
-    },
-    {
-      "icon_id": "24813796",
-      "name": "cart",
-      "font_class": "cart",
-      "unicode": "e631",
-      "unicode_decimal": 58929
-    }
-  ]
-}

+ 0 - 96
node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue

@@ -1,96 +0,0 @@
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
-	<!-- #endif -->
-	<!-- #ifndef APP-NVUE -->
-	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
-	<!-- #endif -->
-</template>
-
-<script>
-	import icons from './icons.js';
-	const getVal = (val) => {
-		const reg = /^[0-9]*$/g
-		return (typeof val === 'number' || reg.test(val) )? val + 'px' : val;
-	} 
-	// #ifdef APP-NVUE
-	var domModule = weex.requireModule('dom');
-	import iconUrl from './uniicons.ttf'
-	domModule.addRule('fontFace', {
-		'fontFamily': "uniicons",
-		'src': "url('"+iconUrl+"')"
-	});
-	// #endif
-
-	/**
-	 * Icons 图标
-	 * @description 用于展示 icons 图标
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
-	 * @property {Number} size 图标大小
-	 * @property {String} type 图标图案,参考示例
-	 * @property {String} color 图标颜色
-	 * @property {String} customPrefix 自定义图标
-	 * @event {Function} click 点击 Icon 触发事件
-	 */
-	export default {
-		name: 'UniIcons',
-		emits:['click'],
-		props: {
-			type: {
-				type: String,
-				default: ''
-			},
-			color: {
-				type: String,
-				default: '#333333'
-			},
-			size: {
-				type: [Number, String],
-				default: 16
-			},
-			customPrefix:{
-				type: String,
-				default: ''
-			}
-		},
-		data() {
-			return {
-				icons: icons.glyphs
-			}
-		},
-		computed:{
-			unicode(){
-				let code = this.icons.find(v=>v.font_class === this.type)
-				if(code){
-					return unescape(`%u${code.unicode}`)
-				}
-				return ''
-			},
-			iconSize(){
-				return getVal(this.size)
-			}
-		},
-		methods: {
-			_onClick() {
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	/* #ifndef APP-NVUE */
-	@import './uniicons.css';
-	@font-face {
-		font-family: uniicons;
-		src: url('./uniicons.ttf') format('truetype');
-	}
-
-	/* #endif */
-	.uni-icons {
-		font-family: uniicons;
-		text-decoration: none;
-		text-align: center;
-	}
-
-</style>

+ 0 - 663
node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.css

@@ -1,663 +0,0 @@
-.uniui-color:before {
-  content: "\e6cf";
-}
-
-.uniui-wallet:before {
-  content: "\e6b1";
-}
-
-.uniui-settings-filled:before {
-  content: "\e6ce";
-}
-
-.uniui-auth-filled:before {
-  content: "\e6cc";
-}
-
-.uniui-shop-filled:before {
-  content: "\e6cd";
-}
-
-.uniui-staff-filled:before {
-  content: "\e6cb";
-}
-
-.uniui-vip-filled:before {
-  content: "\e6c6";
-}
-
-.uniui-plus-filled:before {
-  content: "\e6c7";
-}
-
-.uniui-folder-add-filled:before {
-  content: "\e6c8";
-}
-
-.uniui-color-filled:before {
-  content: "\e6c9";
-}
-
-.uniui-tune-filled:before {
-  content: "\e6ca";
-}
-
-.uniui-calendar-filled:before {
-  content: "\e6c0";
-}
-
-.uniui-notification-filled:before {
-  content: "\e6c1";
-}
-
-.uniui-wallet-filled:before {
-  content: "\e6c2";
-}
-
-.uniui-medal-filled:before {
-  content: "\e6c3";
-}
-
-.uniui-gift-filled:before {
-  content: "\e6c4";
-}
-
-.uniui-fire-filled:before {
-  content: "\e6c5";
-}
-
-.uniui-refreshempty:before {
-  content: "\e6bf";
-}
-
-.uniui-location-filled:before {
-  content: "\e6af";
-}
-
-.uniui-person-filled:before {
-  content: "\e69d";
-}
-
-.uniui-personadd-filled:before {
-  content: "\e698";
-}
-
-.uniui-back:before {
-  content: "\e6b9";
-}
-
-.uniui-forward:before {
-  content: "\e6ba";
-}
-
-.uniui-arrow-right:before {
-  content: "\e6bb";
-}
-
-.uniui-arrowthinright:before {
-  content: "\e6bb";
-}
-
-.uniui-arrow-left:before {
-  content: "\e6bc";
-}
-
-.uniui-arrowthinleft:before {
-  content: "\e6bc";
-}
-
-.uniui-arrow-up:before {
-  content: "\e6bd";
-}
-
-.uniui-arrowthinup:before {
-  content: "\e6bd";
-}
-
-.uniui-arrow-down:before {
-  content: "\e6be";
-}
-
-.uniui-arrowthindown:before {
-  content: "\e6be";
-}
-
-.uniui-bottom:before {
-  content: "\e6b8";
-}
-
-.uniui-arrowdown:before {
-  content: "\e6b8";
-}
-
-.uniui-right:before {
-  content: "\e6b5";
-}
-
-.uniui-arrowright:before {
-  content: "\e6b5";
-}
-
-.uniui-top:before {
-  content: "\e6b6";
-}
-
-.uniui-arrowup:before {
-  content: "\e6b6";
-}
-
-.uniui-left:before {
-  content: "\e6b7";
-}
-
-.uniui-arrowleft:before {
-  content: "\e6b7";
-}
-
-.uniui-eye:before {
-  content: "\e651";
-}
-
-.uniui-eye-filled:before {
-  content: "\e66a";
-}
-
-.uniui-eye-slash:before {
-  content: "\e6b3";
-}
-
-.uniui-eye-slash-filled:before {
-  content: "\e6b4";
-}
-
-.uniui-info-filled:before {
-  content: "\e649";
-}
-
-.uniui-reload:before {
-  content: "\e6b2";
-}
-
-.uniui-micoff-filled:before {
-  content: "\e6b0";
-}
-
-.uniui-map-pin-ellipse:before {
-  content: "\e6ac";
-}
-
-.uniui-map-pin:before {
-  content: "\e6ad";
-}
-
-.uniui-location:before {
-  content: "\e6ae";
-}
-
-.uniui-starhalf:before {
-  content: "\e683";
-}
-
-.uniui-star:before {
-  content: "\e688";
-}
-
-.uniui-star-filled:before {
-  content: "\e68f";
-}
-
-.uniui-calendar:before {
-  content: "\e6a0";
-}
-
-.uniui-fire:before {
-  content: "\e6a1";
-}
-
-.uniui-medal:before {
-  content: "\e6a2";
-}
-
-.uniui-font:before {
-  content: "\e6a3";
-}
-
-.uniui-gift:before {
-  content: "\e6a4";
-}
-
-.uniui-link:before {
-  content: "\e6a5";
-}
-
-.uniui-notification:before {
-  content: "\e6a6";
-}
-
-.uniui-staff:before {
-  content: "\e6a7";
-}
-
-.uniui-vip:before {
-  content: "\e6a8";
-}
-
-.uniui-folder-add:before {
-  content: "\e6a9";
-}
-
-.uniui-tune:before {
-  content: "\e6aa";
-}
-
-.uniui-auth:before {
-  content: "\e6ab";
-}
-
-.uniui-person:before {
-  content: "\e699";
-}
-
-.uniui-email-filled:before {
-  content: "\e69a";
-}
-
-.uniui-phone-filled:before {
-  content: "\e69b";
-}
-
-.uniui-phone:before {
-  content: "\e69c";
-}
-
-.uniui-email:before {
-  content: "\e69e";
-}
-
-.uniui-personadd:before {
-  content: "\e69f";
-}
-
-.uniui-chatboxes-filled:before {
-  content: "\e692";
-}
-
-.uniui-contact:before {
-  content: "\e693";
-}
-
-.uniui-chatbubble-filled:before {
-  content: "\e694";
-}
-
-.uniui-contact-filled:before {
-  content: "\e695";
-}
-
-.uniui-chatboxes:before {
-  content: "\e696";
-}
-
-.uniui-chatbubble:before {
-  content: "\e697";
-}
-
-.uniui-upload-filled:before {
-  content: "\e68e";
-}
-
-.uniui-upload:before {
-  content: "\e690";
-}
-
-.uniui-weixin:before {
-  content: "\e691";
-}
-
-.uniui-compose:before {
-  content: "\e67f";
-}
-
-.uniui-qq:before {
-  content: "\e680";
-}
-
-.uniui-download-filled:before {
-  content: "\e681";
-}
-
-.uniui-pyq:before {
-  content: "\e682";
-}
-
-.uniui-sound:before {
-  content: "\e684";
-}
-
-.uniui-trash-filled:before {
-  content: "\e685";
-}
-
-.uniui-sound-filled:before {
-  content: "\e686";
-}
-
-.uniui-trash:before {
-  content: "\e687";
-}
-
-.uniui-videocam-filled:before {
-  content: "\e689";
-}
-
-.uniui-spinner-cycle:before {
-  content: "\e68a";
-}
-
-.uniui-weibo:before {
-  content: "\e68b";
-}
-
-.uniui-videocam:before {
-  content: "\e68c";
-}
-
-.uniui-download:before {
-  content: "\e68d";
-}
-
-.uniui-help:before {
-  content: "\e679";
-}
-
-.uniui-navigate-filled:before {
-  content: "\e67a";
-}
-
-.uniui-plusempty:before {
-  content: "\e67b";
-}
-
-.uniui-smallcircle:before {
-  content: "\e67c";
-}
-
-.uniui-minus-filled:before {
-  content: "\e67d";
-}
-
-.uniui-micoff:before {
-  content: "\e67e";
-}
-
-.uniui-closeempty:before {
-  content: "\e66c";
-}
-
-.uniui-clear:before {
-  content: "\e66d";
-}
-
-.uniui-navigate:before {
-  content: "\e66e";
-}
-
-.uniui-minus:before {
-  content: "\e66f";
-}
-
-.uniui-image:before {
-  content: "\e670";
-}
-
-.uniui-mic:before {
-  content: "\e671";
-}
-
-.uniui-paperplane:before {
-  content: "\e672";
-}
-
-.uniui-close:before {
-  content: "\e673";
-}
-
-.uniui-help-filled:before {
-  content: "\e674";
-}
-
-.uniui-paperplane-filled:before {
-  content: "\e675";
-}
-
-.uniui-plus:before {
-  content: "\e676";
-}
-
-.uniui-mic-filled:before {
-  content: "\e677";
-}
-
-.uniui-image-filled:before {
-  content: "\e678";
-}
-
-.uniui-locked-filled:before {
-  content: "\e668";
-}
-
-.uniui-info:before {
-  content: "\e669";
-}
-
-.uniui-locked:before {
-  content: "\e66b";
-}
-
-.uniui-camera-filled:before {
-  content: "\e658";
-}
-
-.uniui-chat-filled:before {
-  content: "\e659";
-}
-
-.uniui-camera:before {
-  content: "\e65a";
-}
-
-.uniui-circle:before {
-  content: "\e65b";
-}
-
-.uniui-checkmarkempty:before {
-  content: "\e65c";
-}
-
-.uniui-chat:before {
-  content: "\e65d";
-}
-
-.uniui-circle-filled:before {
-  content: "\e65e";
-}
-
-.uniui-flag:before {
-  content: "\e65f";
-}
-
-.uniui-flag-filled:before {
-  content: "\e660";
-}
-
-.uniui-gear-filled:before {
-  content: "\e661";
-}
-
-.uniui-home:before {
-  content: "\e662";
-}
-
-.uniui-home-filled:before {
-  content: "\e663";
-}
-
-.uniui-gear:before {
-  content: "\e664";
-}
-
-.uniui-smallcircle-filled:before {
-  content: "\e665";
-}
-
-.uniui-map-filled:before {
-  content: "\e666";
-}
-
-.uniui-map:before {
-  content: "\e667";
-}
-
-.uniui-refresh-filled:before {
-  content: "\e656";
-}
-
-.uniui-refresh:before {
-  content: "\e657";
-}
-
-.uniui-cloud-upload:before {
-  content: "\e645";
-}
-
-.uniui-cloud-download-filled:before {
-  content: "\e646";
-}
-
-.uniui-cloud-download:before {
-  content: "\e647";
-}
-
-.uniui-cloud-upload-filled:before {
-  content: "\e648";
-}
-
-.uniui-redo:before {
-  content: "\e64a";
-}
-
-.uniui-images-filled:before {
-  content: "\e64b";
-}
-
-.uniui-undo-filled:before {
-  content: "\e64c";
-}
-
-.uniui-more:before {
-  content: "\e64d";
-}
-
-.uniui-more-filled:before {
-  content: "\e64e";
-}
-
-.uniui-undo:before {
-  content: "\e64f";
-}
-
-.uniui-images:before {
-  content: "\e650";
-}
-
-.uniui-paperclip:before {
-  content: "\e652";
-}
-
-.uniui-settings:before {
-  content: "\e653";
-}
-
-.uniui-search:before {
-  content: "\e654";
-}
-
-.uniui-redo-filled:before {
-  content: "\e655";
-}
-
-.uniui-list:before {
-  content: "\e644";
-}
-
-.uniui-mail-open-filled:before {
-  content: "\e63a";
-}
-
-.uniui-hand-down-filled:before {
-  content: "\e63c";
-}
-
-.uniui-hand-down:before {
-  content: "\e63d";
-}
-
-.uniui-hand-up-filled:before {
-  content: "\e63e";
-}
-
-.uniui-hand-up:before {
-  content: "\e63f";
-}
-
-.uniui-heart-filled:before {
-  content: "\e641";
-}
-
-.uniui-mail-open:before {
-  content: "\e643";
-}
-
-.uniui-heart:before {
-  content: "\e639";
-}
-
-.uniui-loop:before {
-  content: "\e633";
-}
-
-.uniui-pulldown:before {
-  content: "\e632";
-}
-
-.uniui-scan:before {
-  content: "\e62a";
-}
-
-.uniui-bars:before {
-  content: "\e627";
-}
-
-.uniui-cart-filled:before {
-  content: "\e629";
-}
-
-.uniui-checkbox:before {
-  content: "\e62b";
-}
-
-.uniui-checkbox-filled:before {
-  content: "\e62c";
-}
-
-.uniui-shop:before {
-  content: "\e62f";
-}
-
-.uniui-headphones:before {
-  content: "\e630";
-}
-
-.uniui-cart:before {
-  content: "\e631";
-}

BIN
node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.ttf


+ 0 - 144
node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list-item.vue

@@ -1,144 +0,0 @@
-<template>
-	<view>
-		<view v-if="loaded || list.itemIndex < 15" class="uni-indexed-list__title-wrapper">
-			<text v-if="list.items && list.items.length > 0" class="uni-indexed-list__title">{{ list.key }}</text>
-		</view>
-		<view v-if="(loaded || list.itemIndex < 15) && list.items && list.items.length > 0" class="uni-indexed-list__list">
-			<view v-for="(item, index) in list.items" :key="index" class="uni-indexed-list__item" hover-class="uni-indexed-list__item--hover">
-				<view class="uni-indexed-list__item-container" @click="onClick(idx, index)">
-					<view class="uni-indexed-list__item-border" :class="{'uni-indexed-list__item-border--last':index===list.items.length-1}">
-						<view v-if="showSelect" style="margin-right: 20rpx;">
-							<uni-icons :type="item.checked ? 'checkbox-filled' : 'circle'" :color="item.checked ? '#007aff' : '#C0C0C0'" size="24" />
-						</view>
-						<text class="uni-indexed-list__item-content">{{ item.name }}</text>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'UniIndexedList',
-		emits:['itemClick'],
-		props: {
-			loaded: {
-				type: Boolean,
-				default: false
-			},
-			idx: {
-				type: Number,
-				default: 0
-			},
-			list: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			showSelect: {
-				type: Boolean,
-				default: false
-			}
-		},
-		methods: {
-			onClick(idx, index) {
-				this.$emit("itemClick", {
-					idx,
-					index
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-indexed-list__list {
-		background-color: $uni-bg-color;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		border-top-style: solid;
-		border-top-width: 1px;
-		border-top-color: #DEDEDE;
-	}
-
-	.uni-indexed-list__item {
-		font-size: 14px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-	}
-
-	.uni-indexed-list__item-container {
-		padding-left: 15px;
-		flex: 1;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		box-sizing: border-box;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-indexed-list__item-border {
-		flex: 1;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		box-sizing: border-box;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-		height: 50px;
-		padding: 25px;
-		padding-left: 0;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-		border-bottom-color:  #DEDEDE;
-	}
-
-	.uni-indexed-list__item-border--last {
-		border-bottom-width: 0px;
-	}
-
-	.uni-indexed-list__item-content {
-		flex: 1;
-		font-size: 14px;
-		color: #191919;
-	}
-
-	.uni-indexed-list {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-indexed-list__title-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		width: 100%;
-		/* #endif */
-		background-color: #f7f7f7;
-	}
-
-	.uni-indexed-list__title {
-		padding: 6px 12px;
-		line-height: 24px;
-		font-size: 16px;
-		font-weight: 500;
-	}
-</style>

+ 0 - 367
node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list.vue

@@ -1,367 +0,0 @@
-<template>
-	<view class="uni-indexed-list" ref="list" id="list">
-		<!-- #ifdef APP-NVUE -->
-		<list class="uni-indexed-list__scroll" scrollable="true" show-scrollbar="false">
-			<cell v-for="(list, idx) in lists" :key="idx" :ref="'uni-indexed-list-' + idx">
-				<!-- #endif -->
-				<!-- #ifndef APP-NVUE -->
-				<scroll-view :scroll-into-view="scrollViewId" class="uni-indexed-list__scroll" scroll-y>
-					<view v-for="(list, idx) in lists" :key="idx" :id="'uni-indexed-list-' + idx">
-						<!-- #endif -->
-						<indexed-list-item :list="list" :loaded="loaded" :idx="idx" :showSelect="showSelect"
-							@itemClick="onClick"></indexed-list-item>
-						<!-- #ifndef APP-NVUE -->
-					</view>
-				</scroll-view>
-				<!-- #endif -->
-				<!-- #ifdef APP-NVUE -->
-			</cell>
-		</list>
-		<!-- #endif -->
-		<view class="uni-indexed-list__menu" @touchstart="touchStart" @touchmove.stop.prevent="touchMove"
-			@touchend="touchEnd" @mousedown.stop="mousedown" @mousemove.stop.prevent="mousemove"
-			@mouseleave.stop="mouseleave">
-			<view v-for="(list, key) in lists" :key="key" class="uni-indexed-list__menu-item"
-				:class="touchmoveIndex == key ? 'uni-indexed-list__menu--active' : ''">
-				<text class="uni-indexed-list__menu-text"
-					:class="touchmoveIndex == key ? 'uni-indexed-list__menu-text--active' : ''">{{ list.key }}</text>
-			</view>
-		</view>
-		<view v-if="touchmove" class="uni-indexed-list__alert-wrapper">
-			<text class="uni-indexed-list__alert">{{ lists[touchmoveIndex].key }}</text>
-		</view>
-	</view>
-</template>
-<script>
-	import indexedListItem from './uni-indexed-list-item.vue'
-	// #ifdef APP-NVUE
-	const dom = weex.requireModule('dom');
-	// #endif
-	// #ifdef APP-PLUS
-	function throttle(func, delay) {
-		var prev = Date.now();
-		return function() {
-			var context = this;
-			var args = arguments;
-			var now = Date.now();
-			if (now - prev >= delay) {
-				func.apply(context, args);
-				prev = Date.now();
-			}
-		}
-	}
-
-	function touchMove(e) {
-		let pageY = e.touches[0].pageY
-		let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
-		if (this.touchmoveIndex === index) {
-			return false
-		}
-		let item = this.lists[index]
-		if (item) {
-			// #ifndef APP-NVUE
-			this.scrollViewId = 'uni-indexed-list-' + index
-			this.touchmoveIndex = index
-			// #endif
-			// #ifdef APP-NVUE
-			dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
-				animated: false
-			})
-			this.touchmoveIndex = index
-			// #endif
-		}
-	}
-	const throttleTouchMove = throttle(touchMove, 40)
-	// #endif
-
-	/**
-	 * IndexedList 索引列表
-	 * @description 用于展示索引列表
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=375
-	 * @property {Boolean} showSelect = [true|false] 展示模式
-	 * 	@value true 展示模式
-	 * 	@value false 选择模式
-	 * @property {Object} options 索引列表需要的数据对象
-	 * @event {Function} click 点击列表事件 ,返回当前选择项的事件对象
-	 * @example <uni-indexed-list options="" showSelect="false" @click=""></uni-indexed-list>
-	 */
-	export default {
-		name: 'UniIndexedList',
-		components: {
-			indexedListItem
-		},
-		emits: ['click'],
-		props: {
-			options: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			showSelect: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				lists: [],
-				winHeight: 0,
-				itemHeight: 0,
-				winOffsetY: 0,
-				touchmove: false,
-				touchmoveIndex: -1,
-				scrollViewId: '',
-				touchmovable: true,
-				loaded: false,
-				isPC: false
-			}
-		},
-		watch: {
-			options: {
-				handler: function() {
-					this.setList()
-				},
-				deep: true
-			}
-		},
-		mounted() {
-			// #ifdef H5
-			this.isPC = this.IsPC()
-			// #endif
-			setTimeout(() => {
-				this.setList()
-			}, 50)
-			setTimeout(() => {
-				this.loaded = true
-			}, 300);
-		},
-		methods: {
-			setList() {
-				let index = 0;
-				this.lists = []
-				this.options.forEach((value) => {
-					if (value.data.length === 0) {
-						return
-					}
-					let indexBefore = index
-					let items = value.data.map(item => {
-						let obj = {}
-						obj['key'] = value.letter
-						obj['name'] = item
-						obj['itemIndex'] = index
-						index++
-						obj.checked = item.checked ? item.checked : false
-						return obj
-					})
-					this.lists.push({
-						title: value.letter,
-						key: value.letter,
-						items: items,
-						itemIndex: indexBefore
-					})
-				})
-				// #ifndef APP-NVUE
-				uni.createSelectorQuery()
-					.in(this)
-					.select('#list')
-					.boundingClientRect()
-					.exec(ret => {
-						this.winOffsetY = ret[0].top
-						this.winHeight = ret[0].height
-						this.itemHeight = this.winHeight / this.lists.length
-					})
-				// #endif
-				// #ifdef APP-NVUE
-				dom.getComponentRect(this.$refs['list'], (res) => {
-					this.winOffsetY = res.size.top
-					this.winHeight = res.size.height
-					this.itemHeight = this.winHeight / this.lists.length
-				})
-				// #endif
-			},
-			touchStart(e) {
-				this.touchmove = true
-				let pageY = this.isPC ? e.pageY : e.touches[0].pageY
-				let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
-				let item = this.lists[index]
-				if (item) {
-					this.scrollViewId = 'uni-indexed-list-' + index
-					this.touchmoveIndex = index
-					// #ifdef APP-NVUE
-					dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
-						animated: false
-					})
-					// #endif
-				}
-			},
-			touchMove(e) {
-				// #ifndef APP-PLUS
-				let pageY = this.isPC ? e.pageY : e.touches[0].pageY
-				let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
-				if (this.touchmoveIndex === index) {
-					return false
-				}
-				let item = this.lists[index]
-				if (item) {
-					this.scrollViewId = 'uni-indexed-list-' + index
-					this.touchmoveIndex = index
-				}
-				// #endif
-				// #ifdef APP-PLUS
-				throttleTouchMove.call(this, e)
-				// #endif
-			},
-			touchEnd() {
-				this.touchmove = false
-				// this.touchmoveIndex = -1
-			},
-
-			/**
-			 * 兼容 PC @tian
-			 */
-
-			mousedown(e) {
-				if (!this.isPC) return
-				this.touchStart(e)
-			},
-			mousemove(e) {
-				if (!this.isPC) return
-				this.touchMove(e)
-			},
-			mouseleave(e) {
-				if (!this.isPC) return
-				this.touchEnd(e)
-			},
-
-			// #ifdef H5
-			IsPC() {
-				var userAgentInfo = navigator.userAgent;
-				var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
-				var flag = true;
-				for (let v = 0; v < Agents.length - 1; v++) {
-					if (userAgentInfo.indexOf(Agents[v]) > 0) {
-						flag = false;
-						break;
-					}
-				}
-				return flag;
-			},
-			// #endif
-
-
-			onClick(e) {
-				let {
-					idx,
-					index
-				} = e
-				let obj = {}
-				for (let key in this.lists[idx].items[index]) {
-					obj[key] = this.lists[idx].items[index][key]
-				}
-				let select = []
-				if (this.showSelect) {
-					this.lists[idx].items[index].checked = !this.lists[idx].items[index].checked
-					this.lists.forEach((value, idx) => {
-						value.items.forEach((item, index) => {
-							if (item.checked) {
-								let obj = {}
-								for (let key in this.lists[idx].items[index]) {
-									obj[key] = this.lists[idx].items[index][key]
-								}
-								select.push(obj)
-							}
-						})
-					})
-				}
-				this.$emit('click', {
-					item: obj,
-					select: select
-				})
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	.uni-indexed-list {
-		position: absolute;
-		left: 0;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-indexed-list__scroll {
-		flex: 1;
-	}
-
-	.uni-indexed-list__menu {
-		width: 24px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-indexed-list__menu-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		align-items: center;
-		justify-content: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-indexed-list__menu-text {
-		font-size: 12px;
-		text-align: center;
-		color: #aaa;
-	}
-
-	.uni-indexed-list__menu--active {
-		// background-color: rgb(200, 200, 200);
-	}
-
-	.uni-indexed-list__menu--active {}
-
-	.uni-indexed-list__menu-text--active {
-		border-radius: 16px;
-		width: 16px;
-		height: 16px;
-		line-height: 16px;
-		background-color: #007aff;
-		color: #fff;
-	}
-
-	.uni-indexed-list__alert-wrapper {
-		position: absolute;
-		left: 0;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-indexed-list__alert {
-		width: 80px;
-		height: 80px;
-		border-radius: 80px;
-		text-align: center;
-		line-height: 80px;
-		font-size: 35px;
-		color: #fff;
-		background-color: rgba(0, 0, 0, 0.5);
-	}
-</style>

+ 0 - 128
node_modules/@dcloudio/uni-ui/lib/uni-link/uni-link.vue

@@ -1,128 +0,0 @@
-<template>
-	<a v-if="isShowA" class="uni-link" :href="href"
-		:class="{'uni-link--withline':showUnderLine===true||showUnderLine==='true'}"
-		:style="{color,fontSize:fontSize+'px'}" :download="download">
-		<slot>{{text}}</slot>
-	</a>
-	<!-- #ifndef APP-NVUE -->
-	<text v-else class="uni-link" :class="{'uni-link--withline':showUnderLine===true||showUnderLine==='true'}"
-		:style="{color,fontSize:fontSize+'px'}" @click="openURL">
-		<slot>{{text}}</slot>
-	</text>
-	<!-- #endif -->
-	<!-- #ifdef APP-NVUE -->
-	<text v-else class="uni-link" :class="{'uni-link--withline':showUnderLine===true||showUnderLine==='true'}"
-		:style="{color,fontSize:fontSize+'px'}" @click="openURL">
-		{{text}}
-	</text>
-	<!-- #endif -->
-</template>
-
-<script>
-	/**
-	 * Link 外部网页超链接组件
-	 * @description uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=1182
-	 * @property {String} href 点击后打开的外部网页url
-	 * @property {String} text 显示的文字
-	 * @property {String} downlaod H5平台下载文件名
-	 * @property {Boolean} showUnderLine 是否显示下划线
-	 * @property {String} copyTips 在小程序端复制链接时显示的提示语
-	 * @property {String} color 链接文字颜色
-	 * @property {String} fontSize 链接文字大小
-	 * @example * <uni-link href="https://ext.dcloud.net.cn" text="https://ext.dcloud.net.cn"></uni-link>
-	 */
-	export default {
-		name: 'uniLink',
-		props: {
-			href: {
-				type: String,
-				default: ''
-			},
-			text: {
-				type: String,
-				default: ''
-			},
-			download: {
-				type: String,
-				default: ''
-			},
-			showUnderLine: {
-				type: [Boolean, String],
-				default: true
-			},
-			copyTips: {
-				type: String,
-				default: '已自动复制网址,请在手机浏览器里粘贴该网址'
-			},
-			color: {
-				type: String,
-				default: '#999999'
-			},
-			fontSize: {
-				type: [Number, String],
-				default: 14
-			}
-		},
-		computed: {
-			isShowA() {
-				// #ifdef H5
-				this._isH5 = true;
-				// #endif
-				if ((this.isMail() || this.isTel()) && this._isH5 === true) {
-					return true;
-				}
-				return false;
-			}
-		},
-		created() {
-			this._isH5 = null;
-		},
-		methods: {
-			isMail() {
-				return this.href.startsWith('mailto:');
-			},
-			isTel() {
-				return this.href.startsWith('tel:');
-			},
-			openURL() {
-				// #ifdef APP-PLUS
-				if (this.isTel()) {
-					this.makePhoneCall(this.href.replace('tel:', ''));
-				} else {
-					plus.runtime.openURL(this.href);
-				}
-				// #endif
-				// #ifdef H5
-				window.open(this.href)
-				// #endif
-				// #ifdef MP
-				uni.setClipboardData({
-					data: this.href
-				});
-				uni.showModal({
-					content: this.copyTips,
-					showCancel: false
-				});
-				// #endif
-			},
-			makePhoneCall(phoneNumber) {
-				uni.makePhoneCall({
-					phoneNumber
-				})
-			}
-		}
-	}
-</script>
-
-<style>
-	/* #ifndef APP-NVUE */
-	.uni-link {
-		cursor: pointer;
-	}
-
-	/* #endif */
-	.uni-link--withline {
-		text-decoration: underline;
-	}
-</style>

+ 0 - 107
node_modules/@dcloudio/uni-ui/lib/uni-list-ad/uni-list-ad.vue

@@ -1,107 +0,0 @@
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<cell>
-		<!-- #endif -->
-		<view class="uni-list-ad">
-			<view v-if="borderShow" :class="{'uni-list--border':border,'uni-list-item--first':isFirstChild}"></view>
-			<ad style="width: 200px;height: 300px;border-width: 1px;border-color: red;border-style: solid;" adpid="1111111111"
-			 unit-id="" appid="" apid="" type="feed" @error="aderror" @close="closeAd"></ad>
-		</view>
-		<!-- #ifdef APP-NVUE -->
-	</cell>
-	<!-- #endif -->
-
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const dom = uni.requireNativePlugin('dom');
-	// #endif
-	export default {
-		name: 'UniListAd',
-		props: {
-			title: {
-				type: String,
-				default: '',
-
-			}
-		},
-		// inject: ['list'],
-		data() {
-			return {
-				isFirstChild: false,
-				border: false,
-				borderShow: true,
-			}
-		},
-
-		mounted() {
-			this.list = this.getForm()
-			if (this.list) {
-				if (!this.list.firstChildAppend) {
-					this.list.firstChildAppend = true
-					this.isFirstChild = true
-				}
-				this.border = this.list.border
-			}
-		},
-		methods: {
-			/**
-			 * 获取父元素实例
-			 */
-			getForm(name = 'uniList') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-			aderror(e) {
-				console.log("aderror: " + JSON.stringify(e.detail));
-			},
-			closeAd(e) {
-				this.borderShow = false
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-list-ad {
-		position: relative;
-		border: 1px red solid;
-	}
-
-	.uni-list--border {
-		position: relative;
-		padding-bottom: 1px;
-		/* #ifdef APP-PLUS */
-		border-top-color: $uni-border-color;
-		border-top-style: solid;
-		border-top-width: 0.5px;
-		/* #endif */
-		margin-left: $uni-spacing-row-lg;
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-list--border:after {
-		position: absolute;
-		top: 0;
-		right: 0;
-		left: 0;
-		height: 1px;
-		content: '';
-		-webkit-transform: scaleY(.5);
-		transform: scaleY(.5);
-		background-color: $uni-border-color;
-	}
-
-	.uni-list-item--first:after {
-		height: 0px;
-	}
-
-	/* #endif */
-</style>

+ 0 - 58
node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.scss

@@ -1,58 +0,0 @@
-/**
- * 这里是 uni-list 组件内置的常用样式变量
- * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码
- *
- */
-
-// 背景色
-$background-color : #fff;
-// 分割线颜色
-$divide-line-color : #e5e5e5;
-
-// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像
-// nvue 页面不支持修改头像大小
-$avatar-width : 45px ;
-
-// 头像边框
-$avatar-border-radius: 5px;
-$avatar-border-color: #eee;
-$avatar-border-width: 1px;
-
-// 标题文字样式
-$title-size : 16px;
-$title-color : #3b4144;
-$title-weight : normal;
-
-// 描述文字样式
-$note-size : 12px;
-$note-color : #999;
-$note-weight : normal;
-
-// 右侧额外内容默认样式
-$right-text-size : 12px;
-$right-text-color : #999;
-$right-text-weight : normal;
-
-// 角标样式
-// nvue 页面不支持修改圆点位置以及大小
-// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动
-$badge-left: 0px;
-$badge-top: 0px;
-
-// 显示圆点时,圆点大小
-$dot-width: 10px;
-$dot-height: 10px;
-
-// 显示角标时,角标大小和字体大小
-$badge-size : 18px;
-$badge-font : 12px;
-// 显示角标时,角标前景色
-$badge-color : #fff;
-// 显示角标时,角标背景色
-$badge-background-color : #ff5a5f;
-// 显示角标时,角标左右间距
-$badge-space : 6px;
-
-// 状态样式
-// 选中颜色
-$hover : #f5f5f5;

+ 0 - 593
node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.vue

@@ -1,593 +0,0 @@
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<cell>
-		<!-- #endif -->
-		<view :hover-class="!clickable && !link ? '' : 'uni-list-chat--hover'" class="uni-list-chat" @click.stop="onClick">
-			<view :class="{ 'uni-list--border': border, 'uni-list-chat--first': isFirstChild }"></view>
-			<view class="uni-list-chat__container">
-				<view class="uni-list-chat__header-warp">
-					<view v-if="avatarCircle || avatarList.length === 0" class="uni-list-chat__header" :class="{ 'header--circle': avatarCircle }">
-						<image class="uni-list-chat__header-image" :class="{ 'header--circle': avatarCircle }" :src="avatarUrl" mode="aspectFill"></image>
-					</view>
-					<!-- 头像组 -->
-					<view v-else class="uni-list-chat__header">
-						<view v-for="(item, index) in avatarList" :key="index" class="uni-list-chat__header-box" :class="computedAvatar"
-						 :style="{ width: imageWidth + 'px', height: imageWidth + 'px' }">
-							<image class="uni-list-chat__header-image" :style="{ width: imageWidth + 'px', height: imageWidth + 'px' }" :src="item.url"
-							 mode="aspectFill"></image>
-						</view>
-					</view>
-				</view>
-				<!-- #ifndef APP -->
-				<view class="slot-header">
-				<!-- #endif -->
-					<slot name="header"></slot>
-				<!-- #ifndef APP -->
-				</view>
-				<!-- #endif -->
-				<view v-if="badgeText && badgePositon === 'left'" class="uni-list-chat__badge uni-list-chat__badge-pos" :class="[isSingle]">
-					<text class="uni-list-chat__badge-text">{{ badgeText === 'dot' ? '' : badgeText }}</text>
-				</view>
-				<view class="uni-list-chat__content">
-					<view class="uni-list-chat__content-main">
-						<text class="uni-list-chat__content-title uni-ellipsis">{{ title }}</text>
-						<view style="flex-direction: row;">
-							<text class="draft" v-if="isDraft">[草稿]</text>
-							<text class="uni-list-chat__content-note uni-ellipsis">{{isDraft?note.slice(14):note}}</text>
-						</view>
-					</view>
-					<view class="uni-list-chat__content-extra">
-						<slot>
-							<text class="uni-list-chat__content-extra-text">{{ time }}</text>
-							<view v-if="badgeText && badgePositon === 'right'" class="uni-list-chat__badge" :class="[isSingle, badgePositon === 'right' ? 'uni-list-chat--right' : '']">
-								<text class="uni-list-chat__badge-text">{{ badgeText === 'dot' ? '' : badgeText }}</text>
-							</view>
-						</slot>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- #ifdef APP-NVUE -->
-	</cell>
-	<!-- #endif -->
-</template>
-
-<script>
-	// 头像大小
-	const avatarWidth = 45;
-
-	/**
-	 * ListChat 聊天列表
-	 * @description 聊天列表,用于创建聊天类列表
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=24
-	 * @property {String} 	title 							标题
-	 * @property {String} 	note 							描述
-	 * @property {Boolean} 	clickable = [true|false] 		是否开启点击反馈,默认为false
-	 * @property {String} 	badgeText						数字角标内容
-	 * @property {String}  	badgePositon = [left|right]		角标位置,默认为 right
-	 * @property {String} 	link = [false|navigateTo|redirectTo|reLaunch|switchTab] 是否展示右侧箭头并开启点击反馈,默认为false
-	 *  @value false	 	不开启
-	 *  @value navigateTo 	同 uni.navigateTo()
-	 * 	@value redirectTo 	同 uni.redirectTo()
-	 * 	@value reLaunch   	同 uni.reLaunch()
-	 * 	@value switchTab  	同 uni.switchTab()
-	 * @property {String | PageURIString} 	to  			跳转目标页面
-	 * @property {String} 	time							右侧时间显示
-	 * @property {Boolean} 	avatarCircle = [true|false]		是否显示圆形头像,默认为false
-	 * @property {String} 	avatar							头像地址,avatarCircle 不填时生效
-	 * @property {Array} 	avatarList 						头像组,格式为 [{url:''}]
-	 * @event {Function} 	click 							点击 uniListChat 触发事件
-	 */
-	export default {
-		name: 'UniListChat',
-		emits:['click'],
-		props: {
-			title: {
-				type: String,
-				default: ''
-			},
-			note: {
-				type: String,
-				default: ''
-			},
-			clickable: {
-				type: Boolean,
-				default: false
-			},
-			link: {
-				type: [Boolean, String],
-				default: false
-			},
-			to: {
-				type: String,
-				default: ''
-			},
-			badgeText: {
-				type: [String, Number],
-				default: ''
-			},
-			badgePositon: {
-				type: String,
-				default: 'right'
-			},
-			time: {
-				type: String,
-				default: ''
-			},
-			avatarCircle: {
-				type: Boolean,
-				default: false
-			},
-			avatar: {
-				type: String,
-				default: ''
-			},
-			avatarList: {
-				type: Array,
-				default () {
-					return [];
-				}
-			}
-		},
-		// inject: ['list'],
-		computed: {
-			isDraft(){
-				return this.note.slice(0,14) == '[uni-im-draft]'
-			},
-			isSingle() {
-				if (this.badgeText === 'dot') {
-					return 'uni-badge--dot';
-				} else {
-					const badgeText = this.badgeText.toString();
-					if (badgeText.length > 1) {
-						return 'uni-badge--complex';
-					} else {
-						return 'uni-badge--single';
-					}
-				}
-			},
-			computedAvatar() {
-				if (this.avatarList.length > 4) {
-					this.imageWidth = avatarWidth * 0.31;
-					return 'avatarItem--3';
-				} else if (this.avatarList.length > 1) {
-					this.imageWidth = avatarWidth * 0.47;
-					return 'avatarItem--2';
-				} else {
-					this.imageWidth = avatarWidth;
-					return 'avatarItem--1';
-				}
-			}
-		},
-		watch: {
-			avatar:{
-				handler(avatar) {
-					if(avatar.substr(0,8) == 'cloud://'){
-						uniCloud.getTempFileURL({
-							fileList: [avatar]
-						}).then(res=>{
-							// console.log(res);
-							// 兼容uniCloud私有化部署
-							let fileList = res.fileList || res.result.fileList
-							this.avatarUrl = fileList[0].tempFileURL
-						})
-					}else{
-						this.avatarUrl = avatar
-					}
-				},
-				immediate: true
-			}
-		},
-		data() {
-			return {
-				isFirstChild: false,
-				border: true,
-				// avatarList: 3,
-				imageWidth: 50,
-				avatarUrl:''
-			};
-		},
-		mounted() {
-			this.list = this.getForm()
-			if (this.list) {
-				if (!this.list.firstChildAppend) {
-					this.list.firstChildAppend = true;
-					this.isFirstChild = true;
-				}
-				this.border = this.list.border;
-			}
-		},
-		methods: {
-			/**
-			 * 获取父元素实例
-			 */
-			getForm(name = 'uniList') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-			onClick() {
-				if (this.to !== '') {
-					this.openPage();
-					return;
-				}
-
-				if (this.clickable || this.link) {
-					this.$emit('click', {
-						data: {}
-					});
-				}
-			},
-			openPage() {
-				if (['navigateTo', 'redirectTo', 'reLaunch', 'switchTab'].indexOf(this.link) !== -1) {
-					this.pageApi(this.link);
-				} else {
-					this.pageApi('navigateTo');
-				}
-			},
-			pageApi(api) {
-				let callback = {
-					url: this.to,
-					success: res => {
-						this.$emit('click', {
-							data: res
-						});
-					},
-					fail: err => {
-						this.$emit('click', {
-							data: err
-						});
-					}
-				}
-				switch (api) {
-					case 'navigateTo':
-						uni.navigateTo(callback)
-						break
-					case 'redirectTo':
-						uni.redirectTo(callback)
-						break
-					case 'reLaunch':
-						uni.reLaunch(callback)
-						break
-					case 'switchTab':
-						uni.switchTab(callback)
-						break
-					default:
-					uni.navigateTo(callback)
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss" >
-	$uni-font-size-lg:16px;
-	$uni-spacing-row-sm: 5px;
-	$uni-spacing-row-base: 10px;
-	$uni-spacing-row-lg: 15px;
-	$background-color: #fff;
-	$divide-line-color: #e5e5e5;
-	$avatar-width: 45px;
-	$avatar-border-radius: 5px;
-	$avatar-border-color: #eee;
-	$avatar-border-width: 1px;
-	$title-size: 16px;
-	$title-color: #3b4144;
-	$title-weight: normal;
-	$note-size: 12px;
-	$note-color: #999;
-	$note-weight: normal;
-	$right-text-size: 12px;
-	$right-text-color: #999;
-	$right-text-weight: normal;
-	$badge-left: 0px;
-	$badge-top: 0px;
-	$dot-width: 10px;
-	$dot-height: 10px;
-	$badge-size: 18px;
-	$badge-font: 12px;
-	$badge-color: #fff;
-	$badge-background-color: #ff5a5f;
-	$badge-space: 6px;
-	$hover: #f5f5f5;
-
-	.uni-list-chat {
-		font-size: $uni-font-size-lg;
-		position: relative;
-		flex-direction: column;
-		justify-content: space-between;
-		background-color: $background-color;
-	}
-
-	// .uni-list-chat--disabled {
-	// 	opacity: 0.3;
-	// }
-
-	.uni-list-chat--hover {
-		background-color: $hover;
-	}
-
-	.uni-list--border {
-		position: relative;
-		margin-left: $uni-spacing-row-lg;
-		/* #ifdef APP-PLUS */
-		border-top-color: $divide-line-color;
-		border-top-style: solid;
-		border-top-width: 0.5px;
-		/* #endif */
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-list--border:after {
-		position: absolute;
-		top: 0;
-		right: 0;
-		left: 0;
-		height: 1px;
-		content: '';
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		background-color: $divide-line-color;
-	}
-
-	.uni-list-item--first:after {
-		height: 0px;
-	}
-
-	/* #endif */
-
-	.uni-list-chat--first {
-		border-top-width: 0px;
-	}
-
-	.uni-ellipsis {
-		/* #ifndef APP-NVUE */
-		overflow: hidden;
-		white-space: nowrap;
-		text-overflow: ellipsis;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		lines: 1;
-		/* #endif */
-	}
-
-	.uni-ellipsis-2 {
-		/* #ifndef APP-NVUE */
-		overflow: hidden;
-		text-overflow: ellipsis;
-		display: -webkit-box;
-		-webkit-line-clamp: 2;
-		-webkit-box-orient: vertical;
-		/* #endif */
-
-		/* #ifdef APP-NVUE */
-		lines: 2;
-		/* #endif */
-	}
-
-	.uni-list-chat__container {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex: 1;
-		padding: $uni-spacing-row-base $uni-spacing-row-lg;
-		position: relative;
-		overflow: hidden;
-	}
-
-	.uni-list-chat__header-warp {
-		position: relative;
-	}
-
-	.uni-list-chat__header {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		align-content: center;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		flex-wrap: wrap-reverse;
-		/* #ifdef APP-NVUE */
-		width: 50px;
-		height: 50px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		width: $avatar-width;
-		height: $avatar-width;
-		/* #endif */
-
-		border-radius: $avatar-border-radius;
-		border-color: $avatar-border-color;
-		border-width: $avatar-border-width;
-		border-style: solid;
-		overflow: hidden;
-	}
-
-	.uni-list-chat__header-box {
-		/* #ifndef APP-PLUS */
-		box-sizing: border-box;
-		display: flex;
-		width: $avatar-width;
-		height: $avatar-width;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		width: 50px;
-		height: 50px;
-		/* #endif */
-		overflow: hidden;
-		border-radius: 2px;
-	}
-
-	.uni-list-chat__header-image {
-		margin: 1px;
-		/* #ifdef APP-NVUE */
-		width: 50px;
-		height: 50px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		width: $avatar-width;
-		height: $avatar-width;
-		/* #endif */
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-list-chat__header-image {
-		display: block;
-		width: 100%;
-		height: 100%;
-	}
-
-	.avatarItem--1 {
-		width: 100%;
-		height: 100%;
-	}
-
-	.avatarItem--2 {
-		width: 47%;
-		height: 47%;
-	}
-
-	.avatarItem--3 {
-		width: 32%;
-		height: 32%;
-	}
-
-	/* #endif */
-	.header--circle {
-		border-radius: 50%;
-	}
-
-	.uni-list-chat__content {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex: 1;
-		overflow: hidden;
-		padding: 2px 0;
-	}
-
-	.uni-list-chat__content-main {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: space-between;
-		padding-left: $uni-spacing-row-base;
-		flex: 1;
-		overflow: hidden;
-	}
-
-	.uni-list-chat__content-title {
-		font-size: $title-size;
-		color: $title-color;
-		font-weight: $title-weight;
-		overflow: hidden;
-	}
-
-	.draft ,.uni-list-chat__content-note {
-		margin-top: 3px;
-		color: $note-color;
-		font-size: $note-size;
-		font-weight: $title-weight;
-		overflow: hidden;
-	}
-	.draft{
-		color: #eb3a41;
-		/* #ifndef APP-NVUE */
-		flex-shrink: 0;
-		/* #endif */
-		padding-right: 3px;
-	}
-
-	.uni-list-chat__content-extra {
-		/* #ifndef APP-NVUE */
-		flex-shrink: 0;
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: space-between;
-		align-items: flex-end;
-		margin-left: 5px;
-	}
-
-	.uni-list-chat__content-extra-text {
-		color: $right-text-color;
-		font-size: $right-text-size;
-		font-weight: $right-text-weight;
-		overflow: hidden;
-	}
-
-	.uni-list-chat__badge-pos {
-		position: absolute;
-		/* #ifdef APP-NVUE */
-		left: 55px;
-		top: 3px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		left: calc(#{$avatar-width} + 10px - #{$badge-space} + #{$badge-left});
-		top: calc(#{$uni-spacing-row-base}/ 2 + 1px + #{$badge-top});
-		/* #endif */
-	}
-
-	.uni-list-chat__badge {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		border-radius: 100px;
-		background-color: $badge-background-color;
-	}
-
-	.uni-list-chat__badge-text {
-		color: $badge-color;
-		font-size: $badge-font;
-	}
-
-	.uni-badge--single {
-		/* #ifndef APP-NVUE */
-		// left: calc(#{$avatar-width} + 7px + #{$badge-left});
-		/* #endif */
-		width: $badge-size;
-		height: $badge-size;
-	}
-
-	.uni-badge--complex {
-		/* #ifdef APP-NVUE */
-		left: 50px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		width: auto;
-		/* #endif */
-		height: $badge-size;
-		padding: 0 $badge-space;
-	}
-
-	.uni-badge--dot {
-		/* #ifdef APP-NVUE */
-		left: 60px;
-		top: 6px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		left: calc(#{$avatar-width} + 15px - #{$dot-width}/ 2 + 1px + #{$badge-left});
-		/* #endif */
-		width: $dot-width;
-		height: $dot-height;
-		padding: 0;
-	}
-
-	.uni-list-chat--right {
-		/* #ifdef APP-NVUE */
-		left: 0;
-		/* #endif */
-	}
-</style>

+ 0 - 534
node_modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item.vue

@@ -1,534 +0,0 @@
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<cell :keep-scroll-position="keepScrollPosition">
-		<!-- #endif -->
-		<view :class="{ 'uni-list-item--disabled': disabled }" :style="{'background-color':customStyle.backgroundColor}"
-			:hover-class="(!clickable && !link) || disabled || showSwitch ? '' : 'uni-list-item--hover'"
-			class="uni-list-item" @click="onClick">
-			<view v-if="!isFirstChild" class="border--left" :class="{ 'uni-list--border': border }"></view>
-			<view class="uni-list-item__container"
-				:class="{ 'container--right': showArrow || link, 'flex--direction': direction === 'column'}"
-				:style="{paddingTop:padding.top,paddingLeft:padding.left,paddingRight:padding.right,paddingBottom:padding.bottom}">
-				<slot name="header">
-					<view class="uni-list-item__header">
-						<view v-if="thumb" class="uni-list-item__icon">
-							<image :src="thumb" class="uni-list-item__icon-img" :class="['uni-list--' + thumbSize]" />
-						</view>
-						<view v-else-if="showExtraIcon" class="uni-list-item__icon">
-							<uni-icons :customPrefix="extraIcon.customPrefix" :color="extraIcon.color" :size="extraIcon.size" :type="extraIcon.type" />
-						</view>
-					</view>
-				</slot>
-				<slot name="body">
-					<view class="uni-list-item__content"
-						:class="{ 'uni-list-item__content--center': thumb || showExtraIcon || showBadge || showSwitch }">
-						<text v-if="title" class="uni-list-item__content-title"
-							:class="[ellipsis !== 0 && ellipsis <= 2 ? 'uni-ellipsis-' + ellipsis : '']">{{ title }}</text>
-						<text v-if="note" class="uni-list-item__content-note">{{ note }}</text>
-					</view>
-				</slot>
-				<slot name="footer">
-					<view v-if="rightText || showBadge || showSwitch" class="uni-list-item__extra"
-						:class="{ 'flex--justify': direction === 'column' }">
-						<text v-if="rightText" class="uni-list-item__extra-text">{{ rightText }}</text>
-						<uni-badge v-if="showBadge" :type="badgeType" :text="badgeText" :custom-style="badgeStyle" />
-						<switch v-if="showSwitch" :disabled="disabled" :checked="switchChecked"
-							@change="onSwitchChange" />
-					</view>
-				</slot>
-			</view>
-			<uni-icons v-if="showArrow || link" :size="16" class="uni-icon-wrapper" color="#bbb" type="arrowright" />
-		</view>
-		<!-- #ifdef APP-NVUE -->
-	</cell>
-	<!-- #endif -->
-</template>
-
-<script>
-	/**
-	 * ListItem 列表子组件
-	 * @description 列表子组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=24
-	 * @property {String} 	title 							标题
-	 * @property {String} 	note 							描述
-	 * @property {String} 	thumb 							左侧缩略图,若thumb有值,则不会显示扩展图标
-	 * @property {String}  	thumbSize = [lg|base|sm]		略缩图大小
-	 * 	@value 	 lg			大图
-	 * 	@value 	 base		一般
-	 * 	@value 	 sm			小图
-	 * @property {String} 	badgeText						数字角标内容
-	 * @property {String} 	badgeType 						数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21)
-	 * @property {Object}   badgeStyle           数字角标样式
-	 * @property {String} 	rightText 						右侧文字内容
-	 * @property {Boolean} 	disabled = [true|false]			是否禁用
-	 * @property {Boolean} 	clickable = [true|false] 		是否开启点击反馈
-	 * @property {String} 	link = [navigateTo|redirectTo|reLaunch|switchTab] 是否展示右侧箭头并开启点击反馈
-	 *  @value 	navigateTo 	同 uni.navigateTo()
-	 * 	@value redirectTo 	同 uni.redirectTo()
-	 * 	@value reLaunch   	同 uni.reLaunch()
-	 * 	@value switchTab  	同 uni.switchTab()
-	 * @property {String | PageURIString} 	to  			跳转目标页面
-	 * @property {Boolean} 	showBadge = [true|false] 		是否显示数字角标
-	 * @property {Boolean} 	showSwitch = [true|false] 		是否显示Switch
-	 * @property {Boolean} 	switchChecked = [true|false] 	Switch是否被选中
-	 * @property {Boolean} 	showExtraIcon = [true|false] 	左侧是否显示扩展图标
-	 * @property {Object} 	extraIcon 						扩展图标参数,格式为 {color: '#4cd964',size: '22',type: 'spinner'}
-	 * @property {String} 	direction = [row|column]		排版方向
-	 * @value row 			水平排列
-	 * @value column 		垂直排列
-	 * @event {Function} 	click 							点击 uniListItem 触发事件
-	 * @event {Function} 	switchChange 					点击切换 Switch 时触发
-	 */
-	export default {
-		name: 'UniListItem',
-		emits: ['click', 'switchChange'],
-		props: {
-			direction: {
-				type: String,
-				default: 'row'
-			},
-			title: {
-				type: String,
-				default: ''
-			},
-			note: {
-				type: String,
-				default: ''
-			},
-			ellipsis: {
-				type: [Number, String],
-				default: 0
-			},
-			disabled: {
-				type: [Boolean, String],
-				default: false
-			},
-			clickable: {
-				type: Boolean,
-				default: false
-			},
-			showArrow: {
-				type: [Boolean, String],
-				default: false
-			},
-			link: {
-				type: [Boolean, String],
-				default: false
-			},
-			to: {
-				type: String,
-				default: ''
-			},
-			showBadge: {
-				type: [Boolean, String],
-				default: false
-			},
-			showSwitch: {
-				type: [Boolean, String],
-				default: false
-			},
-			switchChecked: {
-				type: [Boolean, String],
-				default: false
-			},
-			badgeText: {
-				type: String,
-				default: ''
-			},
-			badgeType: {
-				type: String,
-				default: 'success'
-			},
-			badgeStyle: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			rightText: {
-				type: String,
-				default: ''
-			},
-			thumb: {
-				type: String,
-				default: ''
-			},
-			thumbSize: {
-				type: String,
-				default: 'base'
-			},
-			showExtraIcon: {
-				type: [Boolean, String],
-				default: false
-			},
-			extraIcon: {
-				type: Object,
-				default () {
-					return {
-						type: '',
-						color: '#000000',
-						size: 20,
-						customPrefix: ''
-					};
-				}
-			},
-			border: {
-				type: Boolean,
-				default: true
-			},
-			customStyle: {
-				type: Object,
-				default () {
-					return {
-						padding: '',
-						backgroundColor: '#FFFFFF'
-					}
-				}
-			},
-			keepScrollPosition: {
-				type: Boolean,
-				default: false
-			}
-		},
-		watch: {
-			'customStyle.padding': {
-				handler(padding) {
-					if(typeof padding == 'number'){
-						padding += ''
-					}
-					let paddingArr = padding.split(' ')
-					if (paddingArr.length === 1) {
-						const allPadding = paddingArr[0]
-						this.padding = {
-							"top": allPadding,
-							"right": allPadding,
-							"bottom": allPadding,
-							"left": allPadding
-						}
-					} else if (paddingArr.length === 2) {
-						const [verticalPadding, horizontalPadding] = paddingArr;
-						this.padding = {
-							"top": verticalPadding,
-							"right": horizontalPadding,
-							"bottom": verticalPadding,
-							"left": horizontalPadding
-						}
-					} else if (paddingArr.length === 4) {
-							const [topPadding, rightPadding, bottomPadding, leftPadding] = paddingArr;
-							this.padding = {
-								"top": topPadding,
-								"right": rightPadding,
-								"bottom": bottomPadding,
-								"left": leftPadding
-							}
-					}
-				},
-				immediate: true
-			}
-		},
-		// inject: ['list'],
-		data() {
-			return {
-				isFirstChild: false,
-				padding: {
-					top: "",
-					right: "",
-					bottom: "",
-					left: ""
-				}
-			};
-		},
-		mounted() {
-			this.list = this.getForm()
-			// 判断是否存在 uni-list 组件
-			if (this.list) {
-				if (!this.list.firstChildAppend) {
-					this.list.firstChildAppend = true;
-					this.isFirstChild = true;
-				}
-			}
-		},
-		methods: {
-			/**
-			 * 获取父元素实例
-			 */
-			getForm(name = 'uniList') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-			onClick() {
-				if (this.to !== '') {
-					this.openPage();
-					return;
-				}
-				if (this.clickable || this.link) {
-					this.$emit('click', {
-						data: {}
-					});
-				}
-			},
-			onSwitchChange(e) {
-				this.$emit('switchChange', e.detail);
-			},
-			openPage() {
-				if (['navigateTo', 'redirectTo', 'reLaunch', 'switchTab'].indexOf(this.link) !== -1) {
-					this.pageApi(this.link);
-				} else {
-					this.pageApi('navigateTo');
-				}
-			},
-			pageApi(api) {
-				let callback = {
-					url: this.to,
-					success: res => {
-						this.$emit('click', {
-							data: res
-						});
-					},
-					fail: err => {
-						this.$emit('click', {
-							data: err
-						});
-					}
-				}
-				switch (api) {
-					case 'navigateTo':
-						uni.navigateTo(callback)
-						break
-					case 'redirectTo':
-						uni.redirectTo(callback)
-						break
-					case 'reLaunch':
-						uni.reLaunch(callback)
-						break
-					case 'switchTab':
-						uni.switchTab(callback)
-						break
-					default:
-						uni.navigateTo(callback)
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	$uni-font-size-sm:12px;
-	$uni-font-size-base:14px;
-	$uni-font-size-lg:16px;
-	$uni-spacing-col-lg: 12px;
-	$uni-spacing-row-lg: 15px;
-	$uni-img-size-sm:20px;
-	$uni-img-size-base:26px;
-	$uni-img-size-lg:40px;
-	$uni-border-color:#e5e5e5;
-	$uni-bg-color-hover:#f1f1f1;
-	$uni-text-color-grey:#999;
-	$list-item-pd: $uni-spacing-col-lg $uni-spacing-row-lg;
-
-	.uni-list-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		font-size: $uni-font-size-lg;
-		position: relative;
-		justify-content: space-between;
-		align-items: center;
-		background-color: #fff;
-		flex-direction: row;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-list-item--disabled {
-		opacity: 0.3;
-	}
-
-	.uni-list-item--hover {
-		background-color: $uni-bg-color-hover !important;
-	}
-
-	.uni-list-item__container {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		padding: $list-item-pd;
-		padding-left: $uni-spacing-row-lg;
-		flex: 1;
-		overflow: hidden;
-		// align-items: center;
-	}
-
-	.container--right {
-		padding-right: 0;
-	}
-
-	// .border--left {
-	// 	margin-left: $uni-spacing-row-lg;
-	// }
-	.uni-list--border {
-		position: absolute;
-		top: 0;
-		right: 0;
-		left: 0;
-		/* #ifdef APP-NVUE */
-		border-top-color: $uni-border-color;
-		border-top-style: solid;
-		border-top-width: 0.5px;
-		/* #endif */
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-list--border:after {
-		position: absolute;
-		top: 0;
-		right: 0;
-		left: 0;
-		height: 1px;
-		content: '';
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		background-color: $uni-border-color;
-	}
-
-	/* #endif */
-	.uni-list-item__content {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		padding-right: 8px;
-		flex: 1;
-		color: #3b4144;
-		// overflow: hidden;
-		flex-direction: column;
-		justify-content: space-between;
-		overflow: hidden;
-	}
-
-	.uni-list-item__content--center {
-		justify-content: center;
-	}
-
-	.uni-list-item__content-title {
-		font-size: $uni-font-size-base;
-		color: #3b4144;
-		overflow: hidden;
-	}
-
-	.uni-list-item__content-note {
-		margin-top: 6rpx;
-		color: $uni-text-color-grey;
-		font-size: $uni-font-size-sm;
-		overflow: hidden;
-	}
-
-	.uni-list-item__extra {
-		// width: 25%;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: flex-end;
-		align-items: center;
-	}
-
-	.uni-list-item__header {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-list-item__icon {
-		margin-right: 18rpx;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.uni-list-item__icon-img {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		height: $uni-img-size-base;
-		width: $uni-img-size-base;
-		margin-right: 10px;
-	}
-
-	.uni-icon-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		padding: 0 10px;
-	}
-
-	.flex--direction {
-		flex-direction: column;
-		/* #ifndef APP-NVUE */
-		align-items: initial;
-		/* #endif */
-	}
-
-	.flex--justify {
-		/* #ifndef APP-NVUE */
-		justify-content: initial;
-		/* #endif */
-	}
-
-	.uni-list--lg {
-		height: $uni-img-size-lg;
-		width: $uni-img-size-lg;
-	}
-
-	.uni-list--base {
-		height: $uni-img-size-base;
-		width: $uni-img-size-base;
-	}
-
-	.uni-list--sm {
-		height: $uni-img-size-sm;
-		width: $uni-img-size-sm;
-	}
-
-	.uni-list-item__extra-text {
-		color: $uni-text-color-grey;
-		font-size: $uni-font-size-sm;
-	}
-
-	.uni-ellipsis-1 {
-		/* #ifndef APP-NVUE */
-		overflow: hidden;
-		white-space: nowrap;
-		text-overflow: ellipsis;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		lines: 1;
-		text-overflow: ellipsis;
-		/* #endif */
-	}
-
-	.uni-ellipsis-2 {
-		/* #ifndef APP-NVUE */
-		overflow: hidden;
-		text-overflow: ellipsis;
-		display: -webkit-box;
-		-webkit-line-clamp: 2;
-		-webkit-box-orient: vertical;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		lines: 2;
-		text-overflow: ellipsis;
-		/* #endif */
-	}
-</style>

+ 0 - 123
node_modules/@dcloudio/uni-ui/lib/uni-list/uni-list.vue

@@ -1,123 +0,0 @@
-<template>
-	<!-- #ifndef APP-NVUE -->
-	<view class="uni-list uni-border-top-bottom">
-		<view v-if="border" class="uni-list--border-top"></view>
-		<slot />
-		<view v-if="border" class="uni-list--border-bottom"></view>
-	</view>
-	<!-- #endif -->
-	<!-- #ifdef APP-NVUE -->
-	<list :bounce="false" :scrollable="true" show-scrollbar :render-reverse="renderReverse" @scroll="scroll" class="uni-list" :class="{ 'uni-list--border': border }" :enableBackToTop="enableBackToTop"
-		loadmoreoffset="15">
-		<slot />
-	</list>
-	<!-- #endif -->
-</template>
-
-<script>
-	/**
-	 * List 列表
-	 * @description 列表组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=24
-	 * @property {String} 	border = [true|false] 		标题
-	 */
-	export default {
-		name: 'uniList',
-		'mp-weixin': {
-			options: {
-				multipleSlots: false
-			}
-		},
-		props: {
-			stackFromEnd:{
-				type: Boolean,
-				default:false
-			},
-			enableBackToTop: {
-				type: [Boolean, String],
-				default: false
-			},
-			scrollY: {
-				type: [Boolean, String],
-				default: false
-			},
-			border: {
-				type: Boolean,
-				default: true
-			},
-			renderReverse:{
-				type: Boolean,
-				default: false
-			}
-		},
-		// provide() {
-		// 	return {
-		// 		list: this
-		// 	};
-		// },
-		created() {
-			this.firstChildAppend = false;
-		},
-		methods: {
-			loadMore(e) {
-				this.$emit('scrolltolower');
-			},
-			scroll(e) {
-				this.$emit('scroll', e);
-			}
-		}
-	};
-</script>
-<style lang="scss">
-	$uni-bg-color:#ffffff;
-	$uni-border-color:#e5e5e5;
-
-	.uni-list {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		background-color: $uni-bg-color;
-		position: relative;
-		flex-direction: column;
-	}
-
-	.uni-list--border {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-top-color: $uni-border-color;
-		border-top-style: solid;
-		border-top-width: 0.5px;
-		border-bottom-color: $uni-border-color;
-		border-bottom-style: solid;
-		border-bottom-width: 0.5px;
-		/* #endif */
-		z-index: -1;
-	}
-
-	/* #ifndef APP-NVUE */
-
-	.uni-list--border-top {
-		position: absolute;
-		top: 0;
-		right: 0;
-		left: 0;
-		height: 1px;
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		background-color: $uni-border-color;
-		z-index: 1;
-	}
-
-	.uni-list--border-bottom {
-		position: absolute;
-		bottom: 0;
-		right: 0;
-		left: 0;
-		height: 1px;
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		background-color: $uni-border-color;
-	}
-
-	/* #endif */
-</style>

+ 0 - 65
node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.vue

@@ -1,65 +0,0 @@
-<template>
-    <!-- #ifdef APP-NVUE -->
-    <refresh :display="display" @refresh="onrefresh" @pullingdown="onpullingdown">
-        <slot />
-    </refresh>
-    <!-- #endif -->
-    <!-- #ifndef APP-NVUE -->
-    <view ref="uni-refresh" class="uni-refresh" v-show="isShow">
-        <slot />
-    </view>
-    <!-- #endif -->
-</template>
-
-<script>
-    export default {
-        name: 'UniRefresh',
-        props: {
-            display: {
-                type: [String],
-                default: "hide"
-            }
-        },
-        data() {
-            return {
-                pulling: false
-            }
-        },
-        computed: {
-            isShow() {
-                if (this.display === "show" || this.pulling === true) {
-                    return true;
-                }
-                return false;
-            }
-        },
-        created() {},
-        methods: {
-            onchange(value) {
-                this.pulling = value;
-            },
-            onrefresh(e) {
-                this.$emit("refresh", e);
-            },
-            onpullingdown(e) {
-                // #ifdef APP-NVUE
-                this.$emit("pullingdown", e);
-                // #endif
-                // #ifndef APP-NVUE
-                var detail = {
-                    viewHeight: 90,
-                    pullingDistance: e.height
-                }
-                this.$emit("pullingdown", detail);
-                // #endif
-            }
-        }
-    }
-</script>
-
-<style>
-    .uni-refresh {
-        height: 0;
-        overflow: hidden;
-    }
-</style>

+ 0 - 87
node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.wxs

@@ -1,87 +0,0 @@
-var pullDown = {
-    threshold: 95,
-    maxHeight: 200,
-    callRefresh: 'onrefresh',
-    callPullingDown: 'onpullingdown',
-    refreshSelector: '.uni-refresh'
-};
-
-function ready(newValue, oldValue, ownerInstance, instance) {
-    var state = instance.getState()
-    state.canPullDown = newValue;
-    // console.log(newValue);
-}
-
-function touchStart(e, instance) {
-    var state = instance.getState();
-    state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
-    state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
-    if (!state.canPullDown) {
-        return
-    }
-
-    // console.log("touchStart");
-
-    state.height = 0;
-    state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
-    state.refreshInstance.setStyle({
-        'height': 0
-    });
-    state.refreshInstance.callMethod("onchange", true);
-}
-
-function touchMove(e, ownerInstance) {
-    var instance = e.instance;
-    var state = instance.getState();
-    if (!state.canPullDown) {
-        return
-    }
-
-    var oldHeight = state.height;
-    var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
-    var height = endY - state.touchStartY;
-    if (height > pullDown.maxHeight) {
-        return;
-    }
-
-    var refreshInstance = state.refreshInstance;
-    refreshInstance.setStyle({
-        'height': height + 'px'
-    });
-
-    height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
-    state.height = height;
-    refreshInstance.callMethod(pullDown.callPullingDown, {
-        height: height
-    });
-}
-
-function touchEnd(e, ownerInstance) {
-    var state = e.instance.getState();
-    if (!state.canPullDown) {
-        return
-    }
-
-    state.refreshInstance.callMethod("onchange", false);
-
-    var refreshInstance = state.refreshInstance;
-    if (state.height > pullDown.threshold) {
-        refreshInstance.callMethod(pullDown.callRefresh);
-        return;
-    }
-
-    refreshInstance.setStyle({
-        'height': 0
-    });
-}
-
-function propObserver(newValue, oldValue, instance) {
-    pullDown = newValue;
-}
-
-module.exports = {
-    touchmove: touchMove,
-    touchstart: touchStart,
-    touchend: touchEnd,
-    propObserver: propObserver
-}

+ 0 - 5
node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/en.json

@@ -1,5 +0,0 @@
-{
-	"uni-load-more.contentdown": "Pull up to show more",
-	"uni-load-more.contentrefresh": "loading...",
-	"uni-load-more.contentnomore": "No more data"
-}

+ 0 - 8
node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 5
node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hans.json

@@ -1,5 +0,0 @@
-{
-	"uni-load-more.contentdown": "上拉显示更多",
-	"uni-load-more.contentrefresh": "正在加载...",
-	"uni-load-more.contentnomore": "没有更多数据了"
-}

+ 0 - 5
node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hant.json

@@ -1,5 +0,0 @@
-{
-	"uni-load-more.contentdown": "上拉顯示更多",
-	"uni-load-more.contentrefresh": "正在加載...",
-	"uni-load-more.contentnomore": "沒有更多數據了"
-}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 112
node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue


+ 0 - 357
node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-nav-bar.vue

@@ -1,357 +0,0 @@
-<template>
-	<view class="uni-navbar" :class="{'uni-dark':dark, 'uni-nvue-fixed': fixed}">
-		<view class="uni-navbar__content" :class="{ 'uni-navbar--fixed': fixed, 'uni-navbar--shadow': shadow, 'uni-navbar--border': border }"
-			:style="{ 'background-color': themeBgColor, 'border-bottom-color':themeColor }" >
-			<status-bar v-if="statusBar" />
-			<view :style="{ color: themeColor,backgroundColor: themeBgColor ,height:navbarHeight}"
-				class="uni-navbar__header">
-				<view @tap="onClickLeft" class="uni-navbar__header-btns uni-navbar__header-btns-left"
-					:style="{width:leftIconWidth}">
-					<slot name="left">
-						<view class="uni-navbar__content_view" v-if="leftIcon.length > 0">
-							<uni-icons :color="themeColor" :type="leftIcon" size="20" />
-						</view>
-						<view :class="{ 'uni-navbar-btn-icon-left': !leftIcon.length > 0 }" class="uni-navbar-btn-text"
-							v-if="leftText.length">
-							<text :style="{ color: themeColor, fontSize: '12px' }">{{ leftText }}</text>
-						</view>
-					</slot>
-				</view>
-				<view class="uni-navbar__header-container " @tap="onClickTitle">
-					<slot>
-						<view class="uni-navbar__header-container-inner" v-if="title.length>0">
-							<text class="uni-nav-bar-text uni-ellipsis-1"
-								:style="{color: themeColor }">{{ title }}</text>
-						</view>
-					</slot>
-				</view>
-				<view @click="onClickRight" class="uni-navbar__header-btns uni-navbar__header-btns-right"
-					:style="{width:rightIconWidth}">
-					<slot name="right">
-						<view v-if="rightIcon.length">
-							<uni-icons :color="themeColor" :type="rightIcon" size="22" />
-						</view>
-						<view class="uni-navbar-btn-text" v-if="rightText.length && !rightIcon.length">
-							<text class="uni-nav-bar-right-text" :style="{ color: themeColor}">{{ rightText }}</text>
-						</view>
-					</slot>
-				</view>
-			</view>
-		</view>
-		<!-- #ifndef APP-NVUE -->
-		<view class="uni-navbar__placeholder" v-if="fixed">
-			<status-bar v-if="statusBar" />
-			<view class="uni-navbar__placeholder-view" :style="{ height:navbarHeight}" />
-		</view>
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	import statusBar from "./uni-status-bar.vue";
-	const getVal = (val) => typeof val === 'number' ? val + 'px' : val;
-
-	/**
-	 * 
-	 * 
-	 * NavBar 自定义导航栏
-	 * @description 导航栏组件,主要用于头部导航
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=52
-	 * @property {Boolean} dark 开启黑暗模式
-	 * @property {String} title 标题文字
-	 * @property {String} leftText 左侧按钮文本
-	 * @property {String} rightText 右侧按钮文本
-	 * @property {String} leftIcon 左侧按钮图标(图标类型参考 [Icon 图标](http://ext.dcloud.net.cn/plugin?id=28) type 属性)
-	 * @property {String} rightIcon 右侧按钮图标(图标类型参考 [Icon 图标](http://ext.dcloud.net.cn/plugin?id=28) type 属性)
-	 * @property {String} color 图标和文字颜色
-	 * @property {String} backgroundColor 导航栏背景颜色
-	 * @property {Boolean} fixed = [true|false] 是否固定顶部
-	 * @property {Boolean} statusBar = [true|false] 是否包含状态栏
-	 * @property {Boolean} shadow = [true|false] 导航栏下是否有阴影
-	 * @property {Boolean} stat 是否开启统计标题上报
-	 * @event {Function} clickLeft 左侧按钮点击时触发
-	 * @event {Function} clickRight 右侧按钮点击时触发
-	 * @event {Function} clickTitle 中间标题点击时触发
-	 */
-	export default {
-		name: "UniNavBar",
-		components: {
-			statusBar
-		},
-		emits: ['clickLeft', 'clickRight', 'clickTitle'],
-		props: {
-			dark: {
-				type: Boolean,
-				default: false
-			},
-			title: {
-				type: String,
-				default: ""
-			},
-			leftText: {
-				type: String,
-				default: ""
-			},
-			rightText: {
-				type: String,
-				default: ""
-			},
-			leftIcon: {
-				type: String,
-				default: ""
-			},
-			rightIcon: {
-				type: String,
-				default: ""
-			},
-			fixed: {
-				type: [Boolean, String],
-				default: false
-			},
-			color: {
-				type: String,
-				default: ""
-			},
-			backgroundColor: {
-				type: String,
-				default: ""
-			},
-			statusBar: {
-				type: [Boolean, String],
-				default: false
-			},
-			shadow: {
-				type: [Boolean, String],
-				default: false
-			},
-			border: {
-				type: [Boolean, String],
-				default: true
-			},
-			height: {
-				type: [Number, String],
-				default: 44
-			},
-			leftWidth: {
-				type: [Number, String],
-				default: 60
-			},
-			rightWidth: {
-				type: [Number, String],
-				default: 60
-			},
-			stat: {
-				type: [Boolean, String],
-				default: ''
-			}
-		},
-		computed: {
-			themeBgColor() {
-				if (this.dark) {
-					// 默认值
-					if (this.backgroundColor) {
-						return this.backgroundColor
-					} else {
-						return this.dark ? '#333' : '#FFF'
-					}
-				}
-				return this.backgroundColor || '#FFF'
-			},
-			themeColor() {
-				if (this.dark) {
-					// 默认值
-					if (this.color) {
-						return this.color
-					} else {
-						return this.dark ? '#fff' : '#333'
-					}
-				}
-				return this.color || '#333'
-			},
-			navbarHeight() {
-				return getVal(this.height)
-			},
-			leftIconWidth() {
-				return getVal(this.leftWidth)
-			},
-			rightIconWidth() {
-				return getVal(this.rightWidth)
-			}
-		},
-		mounted() {
-			if (uni.report && this.stat && this.title !== '') {
-				uni.report('title', this.title)
-			}
-		},
-		methods: {
-			onClickLeft() {
-				this.$emit("clickLeft");
-			},
-			onClickRight() {
-				this.$emit("clickRight");
-			},
-			onClickTitle() {
-				this.$emit("clickTitle");
-			}
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-	$nav-height: 44px;
-
-	.uni-nvue-fixed {
-		/* #ifdef APP-NVUE */
-		position: sticky;
-		/* #endif */
-	}
-	.uni-navbar {
-		// box-sizing: border-box;
-	}
-
-	.uni-nav-bar-text {
-		/* #ifdef APP-PLUS */
-		font-size: 34rpx;
-		/* #endif */
-		/* #ifndef APP-PLUS */
-		font-size: 14px;
-		/* #endif */
-	}
-
-	.uni-nav-bar-right-text {
-		font-size: 12px;
-	}
-
-	.uni-navbar__content {
-		position: relative;
-		// background-color: #fff;
-		// box-sizing: border-box;
-		background-color: transparent;
-	}
-
-	.uni-navbar__content_view {
-		// box-sizing: border-box;
-	}
-
-	.uni-navbar-btn-text {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: flex-start;
-		align-items: center;
-		line-height: 12px;
-	}
-
-	.uni-navbar__header {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		padding: 0 10px;
-		flex-direction: row;
-		height: $nav-height;
-		font-size: 12px;
-	}
-
-	.uni-navbar__header-btns {
-		/* #ifndef APP-NVUE */
-		overflow: hidden;
-		display: flex;
-		/* #endif */
-		flex-wrap: nowrap;
-		flex-direction: row;
-		width: 120rpx;
-		// padding: 0 6px;
-		justify-content: center;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-navbar__header-btns-left {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		width: 120rpx;
-		justify-content: flex-start;
-		align-items: center;
-	}
-
-	.uni-navbar__header-btns-right {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		// width: 150rpx;
-		// padding-right: 30rpx;
-		justify-content: flex-end;
-		align-items: center;
-	}
-
-	.uni-navbar__header-container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		padding: 0 10px;
-		overflow: hidden;
-	}
-
-	.uni-navbar__header-container-inner {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		font-size: 12px;
-		overflow: hidden;
-		// box-sizing: border-box;
-	}
-
-
-	.uni-navbar__placeholder-view {
-		height: $nav-height;
-	}
-
-	.uni-navbar--fixed {
-		position: fixed;
-		z-index: 998;
-		/* #ifdef H5 */
-		left: var(--window-left);
-		right: var(--window-right);
-		/* #endif */
-		/* #ifndef H5 */
-		left: 0;
-		right: 0;
-		/* #endif */
-
-	}
-
-	.uni-navbar--shadow {
-		box-shadow: 0 1px 6px #ccc;
-	}
-
-	.uni-navbar--border {
-		border-bottom-width: 1rpx;
-		border-bottom-style: solid;
-		border-bottom-color: #eee;
-	}
-
-	.uni-ellipsis-1 {
-		overflow: hidden;
-		/* #ifndef APP-NVUE */
-		white-space: nowrap;
-		text-overflow: ellipsis;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		lines: 1;
-		text-overflow: ellipsis;
-		/* #endif */
-	}
-
-	// 暗主题配置
-	.uni-dark {}
-</style>

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott