mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +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>
 |