mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 18:49:06 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			1812 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			1812 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| /**
 | |
| * BaseCloud APP更新检测组件
 | |
| v1.0.4
 | |
| */
 | |
| <template>
 | |
| 	<view class="base-cloud" style="display: inline-block;">
 | |
| 		<view class="father" style="display: flex;align-items: center;" v-if="showVersion" @click.stop.prevent="checkVersion">
 | |
| 			<text class="version-text">版本{{version}}</text>
 | |
| 			<view class="abs top right" v-if="updateData.updated" style="top: -3px;right: -7px;">
 | |
| 				<view class="w7 h7 rds redBg"></view>
 | |
| 			</view>
 | |
| 		</view>
 | |
| 		<view class="fixed z20 wp6 flex ct plr50 pb50 " v-if="show">
 | |
| 			<view class="w100p showIn" :animation="inData" style="max-width: 300px;">
 | |
| 				<view class="rds12" :style="{'background-color':color}">
 | |
| 					<view class="father">
 | |
| 						<view class="h120  father hidden">
 | |
| 							<view class="abs top left50p">
 | |
| 								<image src="./static/cloudRight.png" mode="widthFix" class="w500 h120  animated goAway infinite"></image>
 | |
| 							</view>
 | |
| 							<view class="abs top right50p">
 | |
| 								<image src="./static/cloudLeft.png" mode="widthFix" class="w500 h120  animated goAwayLeft infinite"></image>
 | |
| 							</view>
 | |
| 							<image class="abs top30 left30 w10 h10 animated infinite fadeOut slow" src="./static/star.png" mode="widthFix"></image>
 | |
| 							<image class="abs top60 left80 w10 h10  animated infinite fadeOut slowest delay-1s" src="./static/star.png" mode="widthFix"></image>
 | |
| 							<image class="abs top20 right20 w10 h10  animated infinite fadeOut slower delay-2s" src="./static/star.png" mode="widthFix"></image>
 | |
| 							<image class="abs top20 right50 w30 h30 animated fadeOutRight infinite slowest" src="./static/smallCloud.png"
 | |
| 							 mode="widthFix"></image>
 | |
| 							<image class="abs top30 left50 w30 h30 animated fadeOutRight infinite slow8 " src="./static/smallCloud.png" mode="widthFix"></image>
 | |
| 						</view>
 | |
| 						<view class="abs bottom animated bounceUp infinite">
 | |
| 							<view class="animated goUp delay-06s">
 | |
| 								<image src="./static/airship.png" mode="widthFix" class="w80 h75 center-block father z3"></image>
 | |
| 								<view class="father" style="top: -5px;">
 | |
| 									<image src="./static/shipAir.png" mode="widthFix" class="w40 h85 center-block  animated infinite splashOut"></image>
 | |
| 									<view class="abs">
 | |
| 										<image src="./static/shipAir.png" mode="widthFix" class="w40 h85 center-block animated infinite splashOut delay-03s"></image>
 | |
| 									</view>
 | |
| 									<view class="abs">
 | |
| 										<image src="./static/shipAir.png" mode="widthFix" class="w40 h85 center-block animated infinite splashOut delay-06s"></image>
 | |
| 									</view>
 | |
| 									<view class="abs bottom" style="bottom: -80upx;">
 | |
| 										<image src="./static/shipGas.png" mode="widthFix" class="w40 h85 center-block animated infinite splash"></image>
 | |
| 									</view>
 | |
| 								</view>
 | |
| 							</view>
 | |
| 						</view>
 | |
| 					</view>
 | |
| 
 | |
| 					<view class=" whiteBg hidden plr20 father z3 rdsBr12 rdsBl12" :class="{'pb100':progress <= 0 || progress >= 100 || completed}">
 | |
| 						<view class="ptb10 fz16 bold">
 | |
| 							<block v-if="progress == 0">
 | |
| 								{{title}} {{ updateData.version ? 'v' + updateData.version : ''}}
 | |
| 							</block>
 | |
| 							<block v-else-if="progress <=100 && !completed">
 | |
| 								<view>
 | |
| 									<view class="fz30 normal avanti pt15 text-center">
 | |
| 										{{ progress }}
 | |
| 										<text class="fz12 ml2">
 | |
| 											%
 | |
| 										</text>
 | |
| 									</view>
 | |
| 
 | |
| 									<view class="text-center pb40 op8 gray fz14 normal">
 | |
| 										版本更新中,不要离开...
 | |
| 									</view>
 | |
| 								</view>
 | |
| 							</block>
 | |
| 							<view class="text-center pt15" v-else-if="completed">
 | |
| 								版本升级成功
 | |
| 								<view class="pb40 op8 gray fz14 normal pt5">
 | |
| 									更新已完成,请重启应用体验新版
 | |
| 								</view>
 | |
| 							</view>
 | |
| 						</view>
 | |
| 						<scroll-view scroll-y="true" class="scroll-view h60 autoY pb20" v-if="progress == 0">
 | |
| 							<view class="column">
 | |
| 								<text v-if="updateData.description.length === 0">
 | |
| 									{{ defaultContent }}
 | |
| 								</text>
 | |
| 								<text  v-for="(item, index) in updateData.description" :key="index">
 | |
| 									{{ index + 1 }}.{{ item }}
 | |
| 								</text>
 | |
| 							</view>
 | |
| 						</scroll-view>
 | |
| 						<view class="pd50 pt25" v-else-if="progress < 100">
 | |
| 							<view class="grayBg bd rds23">
 | |
| 								<view class="grayBg rds23">
 | |
| 									<view class="ptb3 rds23" :style="{width:progress+'%','background-color':color}"></view>
 | |
| 								</view>
 | |
| 							</view>
 | |
| 						</view>
 | |
| 						<view class="father">
 | |
| 							<view class="abs top left50p  roundBox rds text-center" :style="{'background-color':color}">
 | |
| 								<view class="pt30" v-if="!completed">
 | |
| 									<button hover-class="op9" @tap.stop="download" class="btn bd2 whiteBg line rds23 inline plr50 ptb10 fz16">
 | |
| 										立即升级
 | |
| 									</button>
 | |
| 								</view>
 | |
| 								<view class="pt30" v-else>
 | |
| 									<button hover-class="op8" @tap.stop="restart" class="btn bd2 whiteBg line rds23 inline plr50 ptb10 fz16">
 | |
| 										立即重启
 | |
| 									</button>
 | |
| 								</view>
 | |
| 							</view>
 | |
| 						</view>
 | |
| 					</view>
 | |
| 				</view>
 | |
| 				<view class="op9 father" v-if="progress == 0">
 | |
| 					<view class="abs">
 | |
| 						<view class="flex ct ">
 | |
| 							<view class="h30 bl3 whiteBd"></view>
 | |
| 						</view>
 | |
| 						<view class="close-btn" @click="hide">
 | |
| 							<text class="mix-icon icon-close"></text>
 | |
| 						</view>
 | |
| 					</view>
 | |
| 				</view>
 | |
| 			</view>
 | |
| 		</view>
 | |
| 		
 | |
| 		<mix-loading v-if="isLoading"></mix-loading>
 | |
| 	</view>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| 	export default {
 | |
| 		name: "version-update",
 | |
| 		props: {
 | |
| 			title: {
 | |
| 				default: "发现新版本"
 | |
| 			},
 | |
| 			defaultContent: {
 | |
| 				default: "快来升级,体验最新的功能吧!"
 | |
| 			},
 | |
| 			showVersion: {
 | |
| 				default: true
 | |
| 			},
 | |
| 			autoShow: {
 | |
| 				default: false
 | |
| 			},
 | |
| 			isCache: {
 | |
| 				default: true
 | |
| 			},
 | |
| 			updateUrl: {
 | |
| 				default: "api/base-app-version"
 | |
| 			},
 | |
| 			color: {
 | |
| 				default: "#ff536f"
 | |
| 			}
 | |
| 		},
 | |
| 		data() {
 | |
| 			return {
 | |
| 				show: false,
 | |
| 				version: "1.0.0",
 | |
| 				updateData: {
 | |
| 					description: []
 | |
| 				},
 | |
| 				progress: 0,
 | |
| 				completed: false,
 | |
| 				inData: null
 | |
| 			};
 | |
| 		},
 | |
| 		created() {
 | |
| 			// #ifdef APP-PLUS
 | |
| 			plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
 | |
| 				this.version = widgetInfo.version;
 | |
| 			});
 | |
| 			// #endif
 | |
| 		},
 | |
| 		methods: {
 | |
| 			async checkVersion(e) {
 | |
| 				console.log(e);
 | |
| 				const res = await this.$request('version', 'check', {
 | |
| 					version: this.version
 | |
| 				}, {
 | |
| 					showLoading: true
 | |
| 				})
 | |
| 				if (res.status === 0) {
 | |
| 					this.$util.msg(res.msg);
 | |
| 				} else {
 | |
| 					res.data.description = res.data.description.split(';');
 | |
| 					this.updateData = res.data;
 | |
| 					this.show = true;
 | |
| 				}
 | |
| 			},
 | |
| 
 | |
| 			download(e) {
 | |
| 				if(this.isDownloading){
 | |
| 					return;
 | |
| 				}
 | |
| 				this.isDownloading = true;
 | |
| 				const task = uni.downloadFile({
 | |
| 					url: this.updateData.downloadLink,
 | |
| 					success: (downloadResult) => {
 | |
| 						this.isDownloading =false;
 | |
| 						uni.hideLoading();
 | |
| 						if (downloadResult.statusCode === 200) {
 | |
| 							plus.runtime.install(downloadResult.tempFilePath, {
 | |
| 								force: false
 | |
| 							}, (e) => {
 | |
| 								this.downloadSuccess(e);
 | |
| 							}, (err) => {
 | |
| 								this.downloadError(err);
 | |
| 							});
 | |
| 						}
 | |
| 					},
 | |
| 					fail: err => {
 | |
| 						this.isDownloading =false;
 | |
| 						this.downloadError(err);
 | |
| 					}
 | |
| 				});
 | |
| 
 | |
| 				task.onProgressUpdate((e) => {
 | |
| 					console.log(e.progress);
 | |
| 					this.progress = e.progress;
 | |
| 				});
 | |
| 			},
 | |
| 			downloadError(e) {
 | |
| 				this.show = false;
 | |
| 				this.progress = 0;
 | |
| 				uni.showModal({
 | |
| 					title: '提示',
 | |
| 					content: '更新失败,请稍后再试',
 | |
| 					showCancel: false,
 | |
| 					confirmColor: '#414cd9'
 | |
| 				});
 | |
| 			},
 | |
| 			downloadSuccess(e) {
 | |
| 				this.completed = true;
 | |
| 			},
 | |
| 			restart(e) {
 | |
| 				this.show = false;
 | |
| 				this.completed = false;
 | |
| 				this.progress = 0;
 | |
| 				// #ifdef APP-PLUS
 | |
| 				plus.runtime.restart();
 | |
| 				// #endif
 | |
| 			},
 | |
| 			hide(e) {
 | |
| 				var animation = uni.createAnimation({
 | |
| 					duration: 300,
 | |
| 					timingFunction: 'ease',
 | |
| 				});
 | |
| 				animation.scale(0).opacity(0).step();
 | |
| 				this.inData = animation.export();
 | |
| 				setTimeout((e) => {
 | |
| 					this.show = false;
 | |
| 					this.inData = null;
 | |
| 				}, 420);
 | |
| 			},
 | |
| 
 | |
| 		},
 | |
| 	}
 | |
| </script>
 | |
| 
 | |
| <style scoped lang="scss">
 | |
| 	.version-text{
 | |
| 		margin-right: 10rpx;
 | |
| 		font-size: 26rpx;
 | |
| 		color: #999;
 | |
| 		position: relative;
 | |
| 		z-index: -2rpx;
 | |
| 	}
 | |
| 	.close-btn{
 | |
| 		display: flex;
 | |
| 		justify-content: center;
 | |
| 		color: #fff;
 | |
| 		
 | |
| 		.mix-icon{
 | |
| 			margin-top: -20rpx;
 | |
| 			padding: 20rpx;
 | |
| 			font-size: 48rpx;
 | |
| 		}
 | |
| 	}
 | |
| 	.scroll-view{
 | |
| 		height: auto !important;
 | |
| 		min-height: 120rpx;
 | |
| 		max-height: 17vh;
 | |
| 		
 | |
| 		text{
 | |
| 			margin-bottom: 16rpx;
 | |
| 			line-height: 1.5;
 | |
| 			font-size: 28rpx;
 | |
| 		}
 | |
| 	}
 | |
| 	.roundBox {
 | |
| 		width: 5000upx;
 | |
| 		height: 5000upx;
 | |
| 		margin-left: -2500upx;
 | |
| 	}
 | |
| 
 | |
| 	.animated {
 | |
| 		-webkit-animation-duration: 1s;
 | |
| 		animation-duration: 1s;
 | |
| 		-webkit-animation-fill-mode: both;
 | |
| 		animation-fill-mode: both;
 | |
| 		animation-timing-function: linear;
 | |
| 	}
 | |
| 
 | |
| 	.animated.infinite {
 | |
| 		-webkit-animation-iteration-count: infinite;
 | |
| 		animation-iteration-count: infinite;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes goUp {
 | |
| 		from {
 | |
| 			-webkit-transform: translate3d(0, 70%, 0);
 | |
| 			transform: translate3d(0, 70%, 0);
 | |
| 		}
 | |
| 
 | |
| 		to {
 | |
| 			-webkit-transform: translate3d(0, 0, 0);
 | |
| 			transform: translate3d(0, 0, 0);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.goUp {
 | |
| 		-webkit-animation-name: goUp;
 | |
| 		animation-name: goUp;
 | |
| 		-webkit-animation-duration: 600ms;
 | |
| 		animation-duration: 600ms;
 | |
| 		animation-timing-function: ease-in;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes splash {
 | |
| 
 | |
| 		0,
 | |
| 		100% {
 | |
| 			transform: scaleX(0.9);
 | |
| 		}
 | |
| 
 | |
| 		5%,
 | |
| 		95% {
 | |
| 			transform: scaleX(1.02);
 | |
| 		}
 | |
| 
 | |
| 		10%,
 | |
| 		80% {
 | |
| 			transform: scaleX(1.05);
 | |
| 		}
 | |
| 
 | |
| 		25%,
 | |
| 		75% {
 | |
| 			transform: scaleX(1.08);
 | |
| 		}
 | |
| 
 | |
| 		50% {
 | |
| 			transform: scaleX(1.1);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.splash {
 | |
| 		-webkit-animation-name: splash;
 | |
| 		animation-name: splash;
 | |
| 		-webkit-animation-duration: 0.6s;
 | |
| 		animation-duration: 0.6s;
 | |
| 		animation-timing-function: linear;
 | |
| 	}
 | |
| 
 | |
| 	@-webkit-keyframes splashOut {
 | |
| 		from {
 | |
| 			opacity: 1;
 | |
| 			transform: scaleX(0);
 | |
| 		}
 | |
| 
 | |
| 		to {
 | |
| 			opacity: 0;
 | |
| 			transform: scaleX(2);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.splashOut {
 | |
| 		-webkit-animation-name: splashOut;
 | |
| 		animation-name: splashOut;
 | |
| 		-webkit-animation-duration: 1s;
 | |
| 		animation-duration: 1s;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes bounceUp {
 | |
| 		0% {
 | |
| 			transform: translate3d(0, 0, 0);
 | |
| 		}
 | |
| 
 | |
| 		50% {
 | |
| 			transform: translate3d(0, -30rpx, 0);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.bounceUp {
 | |
| 		-webkit-animation-name: bounceUp;
 | |
| 		animation-name: bounceUp;
 | |
| 		-webkit-animation-duration: 1.6s;
 | |
| 		animation-duration: 1.6s;
 | |
| 		animation-timing-function: linear;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes fadeOut {
 | |
| 
 | |
| 		0,
 | |
| 		100% {
 | |
| 			opacity: 1;
 | |
| 		}
 | |
| 
 | |
| 		50% {
 | |
| 			opacity: 0;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.fadeOut {
 | |
| 		-webkit-animation-name: fadeOut;
 | |
| 		animation-name: fadeOut;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes fadeOutRight {
 | |
| 		0% {
 | |
| 			opacity: 0;
 | |
| 			transform: translate3d(-200%, 0, 0);
 | |
| 		}
 | |
| 
 | |
| 		50% {
 | |
| 			opacity: 1;
 | |
| 			transform: translate3d(0, 0, 0);
 | |
| 		}
 | |
| 
 | |
| 		100% {
 | |
| 			opacity: 0;
 | |
| 			transform: translate3d(200%, 0, 0);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.fadeOutRight {
 | |
| 		-webkit-animation-name: fadeOutRight;
 | |
| 		animation-name: fadeOutRight;
 | |
| 	}
 | |
| 
 | |
| 	.animated.delay-03s {
 | |
| 		-webkit-animation-delay: 0.3s;
 | |
| 		animation-delay: 0.3s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.delay-06s {
 | |
| 		-webkit-animation-delay: 0.6s;
 | |
| 		animation-delay: 0.6s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.delay-1s {
 | |
| 		-webkit-animation-delay: 1s;
 | |
| 		animation-delay: 1s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.delay-2s {
 | |
| 		-webkit-animation-delay: 2s;
 | |
| 		animation-delay: 2s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.delay-3s {
 | |
| 		-webkit-animation-delay: 3s;
 | |
| 		animation-delay: 3s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.fast {
 | |
| 		-webkit-animation-duration: 800ms;
 | |
| 		animation-duration: 800ms;
 | |
| 	}
 | |
| 
 | |
| 	.animated.faster {
 | |
| 		-webkit-animation-duration: 500ms;
 | |
| 		animation-duration: 500ms;
 | |
| 	}
 | |
| 
 | |
| 	.animated.fastest {
 | |
| 		-webkit-animation-duration: 200ms;
 | |
| 		animation-duration: 200ms;
 | |
| 	}
 | |
| 
 | |
| 	.animated.slow {
 | |
| 		-webkit-animation-duration: 2s;
 | |
| 		animation-duration: 2s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.slower {
 | |
| 		-webkit-animation-duration: 3s;
 | |
| 		animation-duration: 3s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.slowest {
 | |
| 		-webkit-animation-duration: 10s;
 | |
| 		animation-duration: 10s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.slow4 {
 | |
| 		-webkit-animation-duration: 5s;
 | |
| 		animation-duration: 5s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.slow5 {
 | |
| 		-webkit-animation-duration: 5s;
 | |
| 		animation-duration: 5s;
 | |
| 	}
 | |
| 
 | |
| 	.animated.slow8 {
 | |
| 		-webkit-animation-duration: 8s;
 | |
| 		animation-duration: 8s;
 | |
| 	}
 | |
| 
 | |
| 	.goAway {
 | |
| 		transform: translate3d(-50%, 10%, 0);
 | |
| 		-webkit-animation-name: goAway;
 | |
| 		animation-name: goAway;
 | |
| 		-webkit-animation-duration: 2s;
 | |
| 		animation-duration: 2s;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes goAway {
 | |
| 		from {
 | |
| 			transform: translate3d(-50%, 10%, 0);
 | |
| 		}
 | |
| 
 | |
| 		to {
 | |
| 			transform: translate3d(-1.3%, -17.6%, 0);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.goAwayLeft {
 | |
| 		transform: translate3d(50%, 10%, 0);
 | |
| 		-webkit-animation-name: goAwayLeft;
 | |
| 		animation-name: goAwayLeft;
 | |
| 		-webkit-animation-duration: 2s;
 | |
| 		animation-duration: 2s;
 | |
| 	}
 | |
| 
 | |
| 	@keyframes goAwayLeft {
 | |
| 		from {
 | |
| 			transform: translate3d(50%, 10%, 0);
 | |
| 		}
 | |
| 
 | |
| 		to {
 | |
| 			transform: translate3d(2%, -17%, 0);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@keyframes showIn {
 | |
| 
 | |
| 		0% {
 | |
| 			opacity: 0;
 | |
| 			transform: scale3d(0.5, 0.5, 0.5);
 | |
| 		}
 | |
| 
 | |
| 		100% {
 | |
| 			opacity: 1;
 | |
| 			transform: scale3d(1, 1, 1);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.showIn {
 | |
| 		animation-duration: 0.4s;
 | |
| 		animation-name: showIn;
 | |
| 	}
 | |
| 	
 | |
| 	div,a,img,span,page,view,navigator,image,text,input,textarea,button,form{
 | |
| 		box-sizing: border-box;
 | |
| 	}
 | |
| 	
 | |
| 	a{
 | |
| 		text-decoration: none;
 | |
| 		color: $main;
 | |
| 	}
 | |
| 	
 | |
| 	form{
 | |
| 		display: block;
 | |
| 		width: 100%;
 | |
| 	}
 | |
| 	
 | |
| 	image{will-change: transform}
 | |
| 	
 | |
| 	input,textarea,form{
 | |
| 		width: 100%;
 | |
| 		height: auto;
 | |
| 		min-height: 10px;
 | |
| 		display: block;
 | |
| 		font-size: inherit;
 | |
| 	}
 | |
| 	
 | |
| 	button{
 | |
| 		color: inherit;
 | |
| 		line-height: inherit;
 | |
| 		margin: 0;
 | |
| 		background-color: transparent;
 | |
| 		padding: 0;
 | |
| 		-webkit-border-radius: 0;
 | |
| 		-moz-border-radius: 0;
 | |
| 		border-radius: 0;
 | |
| 		&:after{
 | |
| 			display: none;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	switch .uni-switch-input{
 | |
| 		margin-right: 0;
 | |
| 	}
 | |
| 	.wx-switch-input,.uni-switch-input{width:42px !important;height:22px !important;}
 | |
| 		.wx-switch-input::before,.uni-switch-input::before{width:40px !important;height: 20px !important;}
 | |
| 		.wx-switch-input::after,.uni-switch-input::after{width: 20px !important;height: 20px !important;}
 | |
| 	
 | |
| 	
 | |
| 	/**背景颜色**/
 | |
| 	.bg{
 | |
| 		background-color: $main;
 | |
| 		color: $mainInverse;
 | |
| 	}
 | |
| 	.gradualBg{
 | |
| 		background-image: $mainGradual;
 | |
| 		color: $mainGradualInverse ;
 | |
| 	}
 | |
| 	.grayBg{
 | |
| 		background-color: #f7f7f7;
 | |
| 		color: #30302f;
 | |
| 	}
 | |
| 	.whiteBg{
 | |
| 		background-color: #fff;
 | |
| 		color: #000;
 | |
| 	}
 | |
| 	.blackBg{
 | |
| 		background-color: #000;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	.orangeBg{
 | |
| 		background-color: $orange;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	.redBg{
 | |
| 		background-color: $red;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	.yellowBg{
 | |
| 		background-color: $yellow;
 | |
| 		color: #000;
 | |
| 	}
 | |
| 	.greenBg{
 | |
| 		background-color: $green;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	.brownBg{
 | |
| 		background-color: $brown;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	.blueBg{
 | |
| 		background-color: $blue;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	.purpleBg{
 | |
| 		background-color: $purple;
 | |
| 		color: #fff;
 | |
| 	}
 | |
| 	
 | |
| 	/* 文字颜色 */
 | |
| 	.main{
 | |
| 		color: $main;
 | |
| 	}
 | |
| 	.green{
 | |
| 		color: $green;
 | |
| 	}
 | |
| 	.red{
 | |
| 		color: $red;
 | |
| 	}
 | |
| 	.yellow{
 | |
| 		color: $yellow;
 | |
| 	}
 | |
| 	.black{
 | |
| 		color: $black;
 | |
| 	}
 | |
| 	.white{
 | |
| 		color: $white;
 | |
| 	}
 | |
| 	.gray{
 | |
| 		color: $gray;
 | |
| 	}
 | |
| 	.grey{
 | |
| 		color: $grey;
 | |
| 	}
 | |
| 	.orange{
 | |
| 		color: $orange;
 | |
| 	}
 | |
| 	.brown{
 | |
| 		color: $brown;
 | |
| 	}
 | |
| 	.blue{
 | |
| 		color: $blue;
 | |
| 	}
 | |
| 	.purple{
 | |
| 		color: $purple;
 | |
| 	}
 | |
| 	
 | |
| 	.hoverMain{
 | |
| 		&:hover{
 | |
| 			color: $main;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverGreen{
 | |
| 		&:hover{
 | |
| 			color: $green;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverRed{
 | |
| 		&:hover{
 | |
| 			color: $red;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverBlue{
 | |
| 		&:hover{
 | |
| 			color: $blue;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverGray{
 | |
| 		&:hover{
 | |
| 			color: $gray;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverWhite{
 | |
| 		&:hover{
 | |
| 			color: $white;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverBlack{
 | |
| 		&:hover{
 | |
| 			color: $black;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverOrange{
 | |
| 		&:hover{
 | |
| 			color: $orange;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverYellow{
 | |
| 		&:hover{
 | |
| 			color: $yellow;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverBrown{
 | |
| 		&:hover{
 | |
| 			color: $brown;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.hoverPurple{
 | |
| 		&:hover{
 | |
| 			color: $purple;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* 宽度 高度 */
 | |
| 	$w:0;
 | |
| 	@while $w <= 500 {
 | |
| 		@if $w <= 100 {
 | |
| 			.w#{$w}p{
 | |
| 				width: $w*1%;
 | |
| 			}
 | |
| 			.h#{$w}p{
 | |
| 				height: $w*1%;
 | |
| 			}
 | |
| 			@if $w == 100 {
 | |
| 				.100p{
 | |
| 					width: 100%;
 | |
| 					height: 100%;
 | |
| 				}
 | |
| 				.ww{
 | |
| 					width: 100vw;
 | |
| 				}
 | |
| 				.hh{
 | |
| 					height: 100vh;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		.w#{$w}{
 | |
| 			width: $w*2upx;
 | |
| 		}
 | |
| 		.h#{$w}{
 | |
| 			height: $w*2upx;
 | |
| 		}
 | |
| 		@if $w < 10 {
 | |
| 			$w : $w + 1 ;
 | |
| 		} @else{
 | |
| 			$w : $w + 5 ;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	/* 字号 */
 | |
| 	@for $fz from 12 through 100 {
 | |
| 		.fz#{$fz}{
 | |
| 			font-size: $fz*2upx !important;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* 边距 - 覆盖顺序是小的尺寸覆盖大的尺寸 少的方向覆盖多的方向 */
 | |
| 	$s : 0 ;
 | |
| 	@while $s <= 500 {
 | |
| 		.pd#{$s}{
 | |
| 			padding: $s*2upx!important;
 | |
| 		}
 | |
| 		.m#{$s}{
 | |
| 			margin: $s*2upx!important;
 | |
| 		}
 | |
| 		@if $s == 15 {
 | |
| 			.pd{
 | |
| 				padding: 30upx!important;
 | |
| 			}
 | |
| 			.m{
 | |
| 				margin: 30upx!important;
 | |
| 			}
 | |
| 		}
 | |
| 		@if $s < 10 {
 | |
| 			$s : $s + 1 ;
 | |
| 		} @else if($s < 100){
 | |
| 			$s : $s + 5 ;
 | |
| 		}   @else if($s < 300){
 | |
| 			$s : $s + 10 ;
 | |
| 		} @else{
 | |
| 			$s : $s + 50 ;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	$s : 0 ;
 | |
| 	@while $s <= 500 {
 | |
| 		.ptb#{$s}{
 | |
| 			padding-top: $s*2upx!important;
 | |
| 			padding-bottom: $s*2upx!important;
 | |
| 		}
 | |
| 		.plr#{$s}{
 | |
| 			padding-left: $s*2upx!important;
 | |
| 			padding-right: $s*2upx!important;
 | |
| 		}
 | |
| 		.mtb#{$s}{
 | |
| 			margin-top: $s*2upx!important;
 | |
| 			margin-bottom: $s*2upx!important;
 | |
| 		}
 | |
| 		.mlr#{$s}{
 | |
| 			margin-left: $s*2upx!important;
 | |
| 			margin-right: $s*2upx!important;
 | |
| 		}
 | |
| 		@if $s == 15 {
 | |
| 			.ptb{
 | |
| 				padding-top: 30upx!important;
 | |
| 				padding-bottom: 30upx!important;
 | |
| 			}
 | |
| 			.plr{
 | |
| 				padding-left: 30upx!important;
 | |
| 				padding-right: 30upx!important;
 | |
| 			}
 | |
| 			
 | |
| 			.mlr{
 | |
| 				margin-left: 30upx!important;
 | |
| 				margin-right: 30upx!important;
 | |
| 			}
 | |
| 			.mtb{
 | |
| 				margin-top: 30upx!important;
 | |
| 				margin-bottom: 30upx!important;
 | |
| 			}
 | |
| 		}
 | |
| 		@if $s < 10 {
 | |
| 			$s : $s + 1 ;
 | |
| 		} @else if($s < 100){
 | |
| 			$s : $s + 5 ;
 | |
| 		}   @else if($s < 300){
 | |
| 			$s : $s + 10 ;
 | |
| 		} @else{
 | |
| 			$s : $s + 50 ;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	$s : 0 ;
 | |
| 	@while $s <= 500 {
 | |
| 		.pl#{$s}{
 | |
| 			padding-left: $s*2upx!important;
 | |
| 		}
 | |
| 		.pr#{$s}{
 | |
| 			padding-right: $s*2upx!important;
 | |
| 		}
 | |
| 		.pt#{$s}{
 | |
| 			padding-top: $s*2upx!important;
 | |
| 		}
 | |
| 		.pb#{$s}{
 | |
| 			padding-bottom: $s*2upx!important;
 | |
| 		}
 | |
| 		.ml#{$s}{
 | |
| 			margin-left: $s*2upx!important;
 | |
| 		}
 | |
| 		.mr#{$s}{
 | |
| 			margin-right: $s*2upx!important;
 | |
| 		}
 | |
| 		.mt#{$s}{
 | |
| 			margin-top: $s*2upx!important;
 | |
| 		}
 | |
| 		.mb#{$s}{
 | |
| 			margin-bottom: $s*2upx!important;
 | |
| 		}
 | |
| 		@if $s == 15 {
 | |
| 			.pt{
 | |
| 				padding-top: 30upx!important;
 | |
| 			}
 | |
| 			.pb{
 | |
| 				padding-bottom: 30upx!important;
 | |
| 			}
 | |
| 			.pl{
 | |
| 				padding-left: 30upx!important;
 | |
| 			}
 | |
| 			.pr{
 | |
| 				padding-right: 30upx!important;
 | |
| 			}
 | |
| 			.mt{
 | |
| 				margin-top: 30upx!important;
 | |
| 			}
 | |
| 			.mr{
 | |
| 				margin-right: 30upx!important;
 | |
| 			}
 | |
| 			.ml{
 | |
| 				margin-left: 30upx!important;
 | |
| 			}
 | |
| 			.mb{
 | |
| 				margin-bottom: 30upx!important;
 | |
| 			}
 | |
| 		}
 | |
| 		@if $s < 10 {
 | |
| 			$s : $s + 1 ;
 | |
| 		} @else if($s < 100){
 | |
| 			$s : $s + 5 ;
 | |
| 		} @else if($s < 300){
 | |
| 			$s : $s + 10 ;
 | |
| 		} @else{
 | |
| 			$s : $s + 50 ;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	/* 文字溢出隐藏 */
 | |
| 	.clip{
 | |
| 		width: 100%;
 | |
| 		display: -webkit-box;
 | |
| 		overflow: hidden;
 | |
| 		-webkit-line-clamp: 1;
 | |
| 		-webkit-box-orient: vertical;
 | |
| 		@for $i from 2 through 10{
 | |
| 			&.c#{$i}{
 | |
| 				-webkit-line-clamp: $i;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.cut{
 | |
| 		display: block;
 | |
| 		width: 100%;
 | |
| 		overflow: hidden;
 | |
| 		text-overflow: ellipsis;
 | |
| 		white-space: nowrap;
 | |
| 	}
 | |
| 	
 | |
| 	/* 价格 */
 | |
| 	.price{
 | |
| 		font-size: inherit ;
 | |
| 		&:before{
 | |
| 			content: "¥";
 | |
| 			font-size: 70%;
 | |
| 			color: inherit;
 | |
| 			font-weight: normal;
 | |
| 			font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif ;
 | |
| 		}
 | |
| 		.point{
 | |
| 			display: inline-block;
 | |
| 			font-size: 70%;
 | |
| 			font-weight: inherit;
 | |
| 			letter-spacing: 1px;
 | |
| 			color: inherit;
 | |
| 		}
 | |
| 		&.noPrefix{
 | |
| 			&:before{
 | |
| 				content: '';
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* 布局 */
 | |
| 	.grid,.gridNoPd,.gridSmPd,.gridNoMb{
 | |
| 		display: -webkit-box;
 | |
| 		display: -webkit-flex;
 | |
| 		display: -ms-flexbox;
 | |
| 		display: flex;
 | |
| 		-webkit-flex-wrap: wrap;
 | |
| 		-ms-flex-wrap: wrap;
 | |
| 		flex-wrap: wrap;
 | |
| 		width: 100%;
 | |
| 		padding: 20upx 20upx 0 20upx;
 | |
| 		>.item,>image,>view,>navigator,>text,>button{
 | |
| 			width: 50%;
 | |
| 			padding: 0 10upx;
 | |
| 			margin-bottom: 20upx;
 | |
| 		}
 | |
| 		@for $i from 1 through 50{
 | |
| 			&.g#{$i}{
 | |
| 				>.item,>image,>view,>navigator,>text,>button{
 | |
| 					width: 100%/$i;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.gridNoMb{
 | |
| 		>.item,>image,>view,>navigator,>text,>button{
 | |
| 			margin-bottom: 0;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.gridNoPd{
 | |
| 		padding: 0;
 | |
| 		>.item,>image,>view,>navigator,>text,>button{
 | |
| 			padding: 0;
 | |
| 			margin-bottom: 0;
 | |
| 		}
 | |
| 	}
 | |
| 	.gridSmPd{
 | |
| 		padding: 0;
 | |
| 		>.item,>image,>view,>navigator,>text,>button{
 | |
| 			padding-right: 0;
 | |
| 			&:first-child{
 | |
| 				padding-left: 0;
 | |
| 				padding-right: 10upx;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* flex布局 */
 | |
| 	.flex{
 | |
| 		display: flex;
 | |
| 		align-items: center;
 | |
| 		justify-content: space-between;
 | |
| 		&.t{
 | |
| 			align-items: flex-start;
 | |
| 		}
 | |
| 		&.b{
 | |
| 			align-items: flex-end;
 | |
| 		}
 | |
| 		&.cv{ //垂直方向铺满
 | |
| 			align-items: stretch;
 | |
| 		}
 | |
| 		&.bk{ //水平方向铺满
 | |
| 			flex-direction: column;
 | |
| 		}
 | |
| 		&.lt{
 | |
| 			justify-content: flex-start;
 | |
| 		}
 | |
| 		&.ct{
 | |
| 			justify-content: center;
 | |
| 		}
 | |
| 		&.rt{
 | |
| 			justify-content: flex-end;
 | |
| 		}
 | |
| 		&.ar{
 | |
| 			justify-content: space-around;
 | |
| 		}
 | |
| 		&.av{
 | |
| 			>.item,view,button,navigator,image,text{
 | |
| 				flex:1;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* 定位布局 */
 | |
| 	.father{
 | |
| 		position: relative;
 | |
| 	}
 | |
| 	.abs,.fixed{
 | |
| 		position: absolute;
 | |
| 		top: 0;
 | |
| 		left: 0;
 | |
| 		right: 0;
 | |
| 		bottom: 0;
 | |
| 		z-index: 1;
 | |
| 		&image{
 | |
| 			width: 100%;
 | |
| 			height: 100%;
 | |
| 		}
 | |
| 		&.top{
 | |
| 			bottom: auto;
 | |
| 		}
 | |
| 		&.bottom{
 | |
| 			top: auto;
 | |
| 		}
 | |
| 		&.left{
 | |
| 			right: auto;
 | |
| 		}
 | |
| 		&.right{
 | |
| 			left: auto;
 | |
| 		}
 | |
| 	}
 | |
| 	@for $i from 0 through 20 {
 | |
| 		.z#{$i}{
 | |
| 			z-index: $i !important;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	@for $i from 1 through 200 {
 | |
| 		.top-#{$i}{
 | |
| 			bottom: auto;
 | |
| 			top: $i * -2upx;
 | |
| 		}
 | |
| 		.left-#{$i}{
 | |
| 			right: auto;
 | |
| 			left: $i *  -2upx;
 | |
| 		}
 | |
| 		.bottom-#{$i}{
 | |
| 			top: auto;
 | |
| 			bottom: $i *  -2upx;
 | |
| 		}
 | |
| 		.right-#{$i}{
 | |
| 			left: auto;
 | |
| 			right: $i *  -2upx;
 | |
| 		}
 | |
| 		.top#{$i}{
 | |
| 			bottom: auto;
 | |
| 			top: $i * 2upx;
 | |
| 		}
 | |
| 		.left#{$i}{
 | |
| 			right: auto;
 | |
| 			left: $i *  2upx;
 | |
| 		}
 | |
| 		.bottom#{$i}{
 | |
| 			top: auto;
 | |
| 			bottom: $i *  2upx;
 | |
| 		}
 | |
| 		.right#{$i}{
 | |
| 			left: auto;
 | |
| 			right: $i *  2upx;
 | |
| 		}
 | |
| 		.top-#{$i}p{
 | |
| 			bottom: auto;
 | |
| 			top: $i * -1%;
 | |
| 		}
 | |
| 		.left-#{$i}p{
 | |
| 			right: auto;
 | |
| 			left: $i * -1%;
 | |
| 		}
 | |
| 		.bottom-#{$i}p{
 | |
| 			top: auto;
 | |
| 			bottom: $i * -1%;
 | |
| 		}
 | |
| 		.right-#{$i}p{
 | |
| 			left: auto;
 | |
| 			right: $i * -1%;
 | |
| 		}
 | |
| 		.top#{$i}p{
 | |
| 			bottom: auto;
 | |
| 			top: $i * 1%;
 | |
| 		}
 | |
| 		.left#{$i}p{
 | |
| 			right: auto;
 | |
| 			left: $i * 1%;
 | |
| 		}
 | |
| 		.bottom#{$i}p{
 | |
| 			top: auto;
 | |
| 			bottom: $i * 1%;
 | |
| 		}
 | |
| 		.right#{$i}p{
 | |
| 			left: auto;
 | |
| 			right: $i * 1%;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.fixed{
 | |
| 		position: fixed;
 | |
| 	}
 | |
| 	
 | |
| 	/* fix-auto布局 */
 | |
| 	.fixAuto,.fixAutoNoPd,.fixAutoSmPd{
 | |
| 		display: table;
 | |
| 		width: 100%;
 | |
| 		padding: 20upx 10upx;
 | |
| 		>.item,>view,>image,>navigator,>text,>button{
 | |
| 			vertical-align: top;
 | |
| 			padding: 0 10upx;
 | |
| 			display: table-cell ;
 | |
| 		}
 | |
| 		&.middle{
 | |
| 			>.item,>view,>image,>navigator,>text{
 | |
| 				vertical-align: middle;
 | |
| 			}
 | |
| 		}
 | |
| 		&.bottom{
 | |
| 			>.item,>view,>image,>navigator,>text{
 | |
| 				vertical-align: bottom;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	.fixAutoSmPd{
 | |
| 		padding: 0;
 | |
| 		>.item,>view,>image,>navigator,>text{
 | |
| 			padding-right: 0;
 | |
| 			&:first-child{
 | |
| 				padding-left: 0;
 | |
| 				padding-right: 10upx;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	.fixAutoNoPd{
 | |
| 		padding: 0;
 | |
| 		>.item,>view,>image,>navigator,>text{
 | |
| 			padding: 0;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* 浮动组件 */
 | |
| 	.clear{
 | |
| 		&:after{
 | |
| 			content: "";
 | |
| 			clear: both;
 | |
| 			height: 0;
 | |
| 			display: block;
 | |
| 			visibility: hidden;
 | |
| 		}
 | |
| 	}
 | |
| 	.fl{
 | |
| 		float: left;
 | |
| 	}
 | |
| 	.fr{
 | |
| 		float: right;
 | |
| 	}
 | |
| 	
 | |
| 	/* 按钮样式类 */
 | |
| 	.btn,.roundBtn{
 | |
| 		cursor: pointer;
 | |
| 		display: inline-block;
 | |
| 		text-align: center;
 | |
| 		padding: 8upx 24upx;
 | |
| 		background-color: $main;
 | |
| 		color: $mainInverse ;
 | |
| 		font-size: 28upx;
 | |
| 		border: 1px solid $main;
 | |
| 		-webkit-border-radius: 8upx;
 | |
| 		-moz-border-radius: 8upx;
 | |
| 		border-radius: 8upx;
 | |
| 		transition: 0.4s;
 | |
| 		white-space: nowrap;
 | |
| 		text-overflow: ellipsis;
 | |
| 		&.gradualBg{
 | |
| 			border-color: transparent;
 | |
| 			background-image: $mainGradual;
 | |
| 			color: $mainGradualInverse;
 | |
| 			
 | |
| 		}
 | |
| 		&.blackBg{
 | |
| 			background-color: $black;
 | |
| 			border-color: $black;
 | |
| 			color: #fff;
 | |
| 			&.shadow{
 | |
| 				box-shadow: 0px 2px 9px -1px rgba($black , 0.4);
 | |
| 			}
 | |
| 		}
 | |
| 		&.greenBg{
 | |
| 			background-color: $green;
 | |
| 			border-color: $green;
 | |
| 			color: #fff;
 | |
| 			&.shadow{
 | |
| 				box-shadow: 0px 2px 9px -1px rgba($green , 0.4);
 | |
| 			}
 | |
| 		}
 | |
| 		&.grayBg{
 | |
| 			border-color: rgba(#30302f,0.2);
 | |
| 			background-color: #f7f7f7;
 | |
| 			color: #30302f;
 | |
| 			&.shadow{
 | |
| 				box-shadow: 0px 2px 9px -1px rgba( #30302f , 0.2);
 | |
| 			}
 | |
| 		}
 | |
| 		&.whiteBg{
 | |
| 			border-color: rgba(#fff,0.2);
 | |
| 			background-color: #fff;
 | |
| 			color: #000;
 | |
| 		}
 | |
| 		
 | |
| 		&.orangeBg{
 | |
| 			border-color: $orange;
 | |
| 			background-color: $orange;
 | |
| 			color: #fff;
 | |
| 			&.shadow{
 | |
| 				box-shadow: 0px 2px 9px -1px rgba( $orange , 0.4);
 | |
| 			}
 | |
| 		}
 | |
| 		&.redBg{
 | |
| 			border-color: $red;
 | |
| 			background-color: $red;
 | |
| 			color: #fff;
 | |
| 			&.shadow{
 | |
| 				box-shadow: 0px 2px 9px -1px rgba( $red , 0.4);
 | |
| 			}
 | |
| 		}
 | |
| 		&.yellowBg{
 | |
| 			border-color: $yellow;
 | |
| 			background-color: $yellow;
 | |
| 			color: #000;
 | |
| 			&.shadow{
 | |
| 				box-shadow: 0px 2px 9px -1px rgba( $yellow , 0.4);
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		&.line{
 | |
| 			background-color: transparent;
 | |
| 			background-image: none;
 | |
| 			color: $main;
 | |
| 			&.blackBg{
 | |
| 				color: $black;
 | |
| 			}
 | |
| 			&.greenBg{
 | |
| 				color: $green;
 | |
| 			}
 | |
| 			&.yellowBg{
 | |
| 				color: $yellow;
 | |
| 			}
 | |
| 			&.grayBg{
 | |
| 				color: #30302f;
 | |
| 			}
 | |
| 			&.whiteBg{
 | |
| 				border-color:  rgba(#fff,0.7);
 | |
| 				color: #fff;
 | |
| 			}
 | |
| 			&.orangeBg{
 | |
| 				color: $orange;
 | |
| 			}
 | |
| 			&.redBg{
 | |
| 				color: $red;
 | |
| 			}
 | |
| 		}
 | |
| 		&+.btn,&+.roundBtn{
 | |
| 			margin-left: 20upx;
 | |
| 		}
 | |
| 		&.block{
 | |
| 		   margin: 0;
 | |
| 		   padding: 20upx 24upx;
 | |
| 		   display: block;
 | |
| 		   width: 100%;
 | |
| 		   &+.btn{
 | |
| 			   margin-left: 0;
 | |
| 		   }
 | |
| 		}
 | |
| 		&:hover{
 | |
| 			-webkit-transform: scale(0.99);
 | |
| 			-moz-transform: scale(0.99);
 | |
| 			-ms-transform: scale(0.99);
 | |
| 			-o-transform: scale(0.99);
 | |
| 			transform: scale(0.99);
 | |
| 			opacity: 0.8;
 | |
| 		}
 | |
| 		&.disabled{
 | |
| 			-webkit-transform: scale(1);
 | |
| 			-moz-transform: scale(1);
 | |
| 			-ms-transform: scale(1);
 | |
| 			-o-transform: scale(1);
 | |
| 			transform: scale(1);
 | |
| 			opacity: 0.4;
 | |
| 			cursor: not-allowed;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	[class^="tag"] , [class*=" tag"]{
 | |
| 		display: inline-block;
 | |
| 		font-size: 24upx;
 | |
| 		padding: 4upx 14upx;
 | |
| 		border-radius: 4upx;
 | |
| 		margin-right: 6upx;
 | |
| 		margin-left: 6upx;
 | |
| 	}
 | |
| 	.tag{
 | |
| 		background-color: rgba($main,0.2);
 | |
| 		color: $main;
 | |
| 	}
 | |
| 	.tagBlue{
 | |
| 		background-color: rgba($blue,0.2);
 | |
| 		color: $blue;
 | |
| 	}
 | |
| 	.tagGray{
 | |
| 		background-color: rgba($gray,0.2);
 | |
| 		color: $gray;
 | |
| 	}
 | |
| 	
 | |
| 	.tagGradual{
 | |
| 		background-image: linear-gradient(to top right,rgba($main,0.2),rgba($main,0.1));
 | |
| 		color: $main;
 | |
| 	}
 | |
| 	
 | |
| 	.tagBlack{
 | |
| 		background-color: rgba($black,0.2);
 | |
| 		color: $black;
 | |
| 	}
 | |
| 	.tagGreen{
 | |
| 		background-color: rgba($green,0.2);
 | |
| 		color: $green;
 | |
| 	}
 | |
| 	
 | |
| 	.tagWhite{
 | |
| 		background-color: rgba($white,0.2);
 | |
| 		color: $white;
 | |
| 	}
 | |
| 	
 | |
| 	.tagOrange{
 | |
| 		background-color: rgba($orange,0.2);
 | |
| 		color: $orange;
 | |
| 	}
 | |
| 	.tagRed{
 | |
| 		background-color: rgba($red,0.2);
 | |
| 		color: $red;
 | |
| 	}
 | |
| 	.tagYellow{
 | |
| 		background-color: rgba($yellow,0.2);
 | |
| 		color: $yellow;
 | |
| 	}
 | |
| 	
 | |
| 	/* 边线(实线、虚线) */
 | |
| 	.bdn{
 | |
| 		border: none;
 | |
| 	}
 | |
| 	.bd{
 | |
| 		border: 1px solid $borderColor;
 | |
| 		&.dashed{
 | |
| 			border-style: dashed;
 | |
| 		}
 | |
| 	}
 | |
| 	.bt{
 | |
| 		border-top:1px solid $borderColor;
 | |
| 		&.dashed{
 | |
| 			border-top-style: dashed;
 | |
| 		}
 | |
| 	}
 | |
| 	.bb{
 | |
| 		border-bottom:1px solid $borderColor;
 | |
| 		&.dashed{
 | |
| 			border-bottom-style: dashed;
 | |
| 		}
 | |
| 	}
 | |
| 	.bl{
 | |
| 		border-left:1px solid $borderColor;
 | |
| 		&.dashed{
 | |
| 			border-left-style: dashed;
 | |
| 		}
 | |
| 	}
 | |
| 	.br{
 | |
| 		border-right: 1px solid $borderColor;
 | |
| 		&.dashed{
 | |
| 			border-right-style: dashed;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	$b:2;
 | |
| 	@while $b <= 10 {
 | |
| 		.bd#{$b}{
 | |
| 			border: #{$b}px solid $borderColor;
 | |
| 			&.dashed{
 | |
| 				border-style: dashed;
 | |
| 			}
 | |
| 		}
 | |
| 		.bt#{$b}{
 | |
| 			border-top:#{$b}px solid $borderColor;
 | |
| 			&.dashed{
 | |
| 				border-top-style: dashed;
 | |
| 			}
 | |
| 		}
 | |
| 		.bb#{$b}{
 | |
| 			border-bottom:#{$b}px solid $borderColor;
 | |
| 			&.dashed{
 | |
| 				border-bottom-style: dashed;
 | |
| 			}
 | |
| 		}
 | |
| 		.bl#{$b}{
 | |
| 			border-left:#{$b}px solid $borderColor;
 | |
| 			&.dashed{
 | |
| 				border-left-style: dashed;
 | |
| 			}
 | |
| 		}
 | |
| 		.br#{$b}{
 | |
| 			border-right: #{$b}px solid $borderColor;
 | |
| 			&.dashed{
 | |
| 				border-right-style: dashed;
 | |
| 			}
 | |
| 		}
 | |
| 		$b : $b + 1 ;
 | |
| 	}
 | |
| 	
 | |
| 	/* 边线颜色 */
 | |
| 	.mainBd{
 | |
| 		border-color: $main;
 | |
| 	}
 | |
| 	.greenBd{
 | |
| 		border-color:  $green;
 | |
| 	}
 | |
| 	.redBd{
 | |
| 		border-color: $red;
 | |
| 	}
 | |
| 	.yellowBd{
 | |
| 		border-color:$yellow ;
 | |
| 	}
 | |
| 	.blackBd{
 | |
| 		border-color: $black;
 | |
| 	}
 | |
| 	.whiteBd{
 | |
| 		border-color:$white ;
 | |
| 	}
 | |
| 	.grayBd{
 | |
| 		border-color:$gray;
 | |
| 	}
 | |
| 	.greyBd{
 | |
| 		border-color:$grey;
 | |
| 	}
 | |
| 	.orangeBd{
 | |
| 		border-color:$orange;
 | |
| 	}
 | |
| 	
 | |
| 	/* 圆角 */
 | |
| 	.radius,.rds{
 | |
| 		-webkit-border-radius: 100%!important;
 | |
| 		-moz-border-radius: 100%!important;
 | |
| 		border-radius: 100%!important;
 | |
| 	}
 | |
| 	
 | |
| 	$r:0;
 | |
| 	@while $r <= 50{
 | |
| 		.rds#{$r},&.radius#{$r}{
 | |
| 			-webkit-border-radius:$r*2upx!important;
 | |
| 			-moz-border-radius:$r*2upx!important;
 | |
| 			border-radius:$r*2upx!important;
 | |
| 		}
 | |
| 		$r : $r + 1;
 | |
| 	}
 | |
| 	
 | |
| 	.rdsTl,.radiusTopLeft{
 | |
| 		border-top-left-radius:100%!important;
 | |
| 	}
 | |
| 	.rdsTr,.radiusTopRight{
 | |
| 		border-top-right-radius: 100%!important;
 | |
| 	}
 | |
| 	.rdsBl,.radiusBottomLeft{
 | |
| 		border-bottom-left-radius: 100%!important;
 | |
| 	}
 | |
| 	.rdsBr,.radiusBottomRight{
 | |
| 		border-bottom-right-radius: 100%!important;
 | |
| 	}
 | |
| 	
 | |
| 	$r:0;
 | |
| 	@while $r <= 50{
 | |
| 		.rdsTl#{$r},.radiusTopLeft#{$r}{
 | |
| 			border-top-left-radius: $r*2upx!important;
 | |
| 		}
 | |
| 		.rdsTr#{$r},.radiusTopRight#{$r}{
 | |
| 			border-top-right-radius: $r*2upx!important;
 | |
| 		}
 | |
| 		.rdsBl#{$r},.radiusBottomLeft#{$r}{
 | |
| 			border-bottom-left-radius: $r*2upx!important;
 | |
| 		}
 | |
| 		.rdsBr#{$r},.radiusBottomRight#{$r}{
 | |
| 			border-bottom-right-radius: $r*2upx!important;
 | |
| 		}
 | |
| 		$r : $r + 1;
 | |
| 	}
 | |
| 	
 | |
| 	/* 正方形&长方形 */
 | |
| 	[class^="square"] , [class*=" square"]{
 | |
| 		width: 100%;
 | |
| 		position: relative;
 | |
| 		height: auto;
 | |
| 		>.item,>image,>view,>navigator,>text,>button{
 | |
| 			position: absolute;
 | |
| 			top: 0;
 | |
| 			left: 0;
 | |
| 			width: 100%;
 | |
| 			height: 100%;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	$p : 200 ;
 | |
| 	@while $p > 0 {
 | |
| 		.square#{$p}{
 | |
| 			padding-top: $p*1%;
 | |
| 		}
 | |
| 		@if $p == 100 {
 | |
| 			.square{
 | |
| 				padding-top: 100%;
 | |
| 			}
 | |
| 		}
 | |
| 		$p : $p - 5 ;
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	/* 阴影 */
 | |
| 	.shadow{
 | |
| 		box-shadow: 0px 2px 9px -1px rgba(0, 0, 0, 0.1);
 | |
| 	}
 | |
| 	
 | |
| 	/* 遮罩层 */
 | |
| 	.wrapper-top,.wt{
 | |
| 		background-image: linear-gradient(rgba(0,0,0,0.3) , rgba(0,0,0,0.02));
 | |
| 	}
 | |
| 	.wrapper-bottom,.wb{
 | |
| 		background-image: linear-gradient( rgba(0,0,0,0.02) , rgba(0,0,0,0.3) );
 | |
| 	}
 | |
| 	
 | |
| 	[class^="wp"],[class*=" wp"] {
 | |
| 		z-index: 10;
 | |
| 	}
 | |
| 	
 | |
| 	/* 透明度 */
 | |
| 	@for $op from 0 through 10 {
 | |
| 		.op#{$op}{
 | |
| 			opacity: $op * 0.1!important;
 | |
| 		}
 | |
| 		.wp#{$op}{
 | |
| 			background-color: rgba(#000,$op*0.1);
 | |
| 		}
 | |
| 		@if $op == 5 {
 | |
| 			.wp{
 | |
| 				background-color: rgba(#000,0.5);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/* 分割线 */
 | |
| 	[class*=" split"],[class^="split"] {
 | |
| 		position: relative;
 | |
| 		&:before{
 | |
| 			content:"";
 | |
| 			display: block;
 | |
| 			position: absolute;
 | |
| 			left: 0;
 | |
| 			top: 50%;
 | |
| 			border-left: 1px solid $borderColor;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	$s:10;
 | |
| 	@while $s <= 100 {
 | |
| 		.split#{$s}{
 | |
| 			&:before{
 | |
| 				height: #{$s*2}upx;
 | |
| 				margin-top: -#{$s}upx;
 | |
| 			}
 | |
| 		}
 | |
| 		@if $s == 10 {
 | |
| 			.split{
 | |
| 				&:before{
 | |
| 					height: 20upx;
 | |
| 					margin-top: -10upx;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 		$s:$s+2;
 | |
| 	}
 | |
| 	
 | |
| 	.hover,[class^="hover"],[class*=" hover"]{
 | |
| 		transition: all 0.4s;
 | |
| 		cursor: pointer;
 | |
| 		&:hover{
 | |
| 			opacity: 0.8 !important;
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	.statusBar{
 | |
| 		height: var(--status-bar-height);
 | |
| 	}
 | |
| 	
 | |
| 	.winBottom{
 | |
| 		height: var(--windown-bottom);
 | |
| 	}
 | |
| 	
 | |
| 	.safeBottom{
 | |
| 		padding-bottom: constant(safe-area-inset-bottom);
 | |
| 		padding-bottom: env(safe-area-inset-bottom);
 | |
| 	}
 | |
| 	
 | |
| 	.disabled{
 | |
| 		opacity:0.8;
 | |
| 		cursor: not-allowed;
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	
 | |
| 	.grid,.gridNoMb,.gridNoPd{
 | |
| 		>.btn,>.roundBtn{
 | |
| 			&+.btn,&+.roundBtn{
 | |
| 				margin-left: 0 ;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	.roundBtn{
 | |
| 		-webkit-border-radius: 100upx;
 | |
| 		-moz-border-radius: 100upx;
 | |
| 		border-radius: 100upx;
 | |
| 	} 
 | |
| 	 
 | |
| 	 
 | |
| 	 
 | |
| 	 /* 位置 */
 | |
| 	 .text-center,.tc{
 | |
| 	 	text-align: center!important;
 | |
| 	 }
 | |
| 	 .text-left,.tl{
 | |
| 	 	text-align: left!important;
 | |
| 	 }
 | |
| 	 .text-right,.tr{
 | |
| 	 	text-align: right!important;
 | |
| 	 }
 | |
| 	 .text-justify,.tj{
 | |
| 	 	text-align: justify!important;
 | |
| 	 }
 | |
| 	 .text-bold,.bold{
 | |
| 	 	font-weight: bold!important;
 | |
| 	 }
 | |
| 	 .text-normal,.normal{
 | |
| 	 	font-weight: normal!important;
 | |
| 	 }
 | |
| 	 .break{
 | |
| 	 	white-space: normal;
 | |
| 	 	word-break: break-all;
 | |
| 	 }
 | |
| 	 .noBreak{
 | |
| 	 	white-space: nowrap;
 | |
| 	 	word-break: keep-all;
 | |
| 	 }
 | |
| 	 .inline{
 | |
| 	 	display: inline-block;
 | |
| 	 }
 | |
| 	 .block{
 | |
| 	 	display: block;
 | |
| 	 	width: 100%;
 | |
| 	 }
 | |
| 	 .none{
 | |
| 	 	display: none;
 | |
| 	 }
 | |
| 	 .center-block{
 | |
| 	 	margin: 0 auto;
 | |
| 	 	display: block;
 | |
| 	 }
 | |
| 	 .hidden{
 | |
| 	 	overflow: hidden;
 | |
| 	 }
 | |
| 	 .hiddenX{
 | |
| 	 	overflow-x: hidden;
 | |
| 	 }
 | |
| 	 .hiddenY{
 | |
| 	 	overflow-y: hidden;
 | |
| 	 }
 | |
| 	 .auto{
 | |
| 	 	overflow: auto;
 | |
| 	 }
 | |
| 	 .autoX{
 | |
| 	 	overflow-x: auto;
 | |
| 	 }
 | |
| 	 .autoY{
 | |
| 	 	overflow-y: auto;
 | |
| 	 }
 | |
| 	 .showInMb{
 | |
| 		 display: block;
 | |
| 	 }
 | |
| 	 .showInPc{
 | |
| 		 display: none;
 | |
| 	 }
 | |
| 	 table{
 | |
| 	 	width: 100%;
 | |
| 	 	border-collapse: collapse;
 | |
| 	 	border-spacing: 0;
 | |
| 	 	border: 1px solid #e6e6e6;
 | |
| 	 	thead{
 | |
| 	 		tr{
 | |
| 	 			background-color: #f2f2f2;
 | |
| 	 			th{
 | |
| 	 				color: #8799a3;
 | |
| 	 				width: 1%;
 | |
| 	 			}
 | |
| 	 		}
 | |
| 	 	}
 | |
| 	 	tr{
 | |
| 	 		background-color: #fff;
 | |
| 	 		transition: all 0.4s;
 | |
| 	 		td,th{
 | |
| 	 			border: 1px solid #e6e6e6;
 | |
| 	 			overflow: hidden;
 | |
| 	 			-o-text-overflow: ellipsis;
 | |
| 	 			text-overflow: ellipsis;
 | |
| 	 			white-space: nowrap;
 | |
| 	 			word-wrap: break-word;
 | |
| 	 			padding: 5px 10px;
 | |
| 	 			height: 28px;
 | |
| 	 			line-height: 28px;
 | |
| 	 			&.autoWidth{
 | |
| 	 				width: auto;
 | |
| 	 			}
 | |
| 	 		}
 | |
| 	 		&:hover{
 | |
| 	 			background-color: #f2f2f2;
 | |
| 	 		}
 | |
| 	 	}
 | |
| 	 }
 | |
| </style>
 | 
