删除没有的components组件
							parent
							
								
									3f19fc8c15
								
							
						
					
					
						commit
						415dd15dd1
					
				| 
						 | 
					@ -19,6 +19,7 @@ export function getAddressList(pageNumber, pageSize) {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 获取物流公司
 | 
					 * 获取物流公司
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,151 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<text v-if="text" :class="inverted ? 'uni-badge--' + type + ' uni-badge--' + size + ' uni-badge--' + type + '-inverted' : 'uni-badge--' + type + ' uni-badge--' + size"
 | 
					 | 
				
			||||||
	 :style="badgeStyle" class="uni-badge" @click="onClick()">{{ text }}</text>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Badge 数字角标
 | 
					 | 
				
			||||||
	 * @description 数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=21
 | 
					 | 
				
			||||||
	 * @property {String} text 角标内容
 | 
					 | 
				
			||||||
	 * @property {String} type = [default|primary|success|warning|error] 颜色类型
 | 
					 | 
				
			||||||
	 * 	@value default 灰色
 | 
					 | 
				
			||||||
	 * 	@value primary 蓝色
 | 
					 | 
				
			||||||
	 * 	@value success 绿色
 | 
					 | 
				
			||||||
	 * 	@value warning 黄色
 | 
					 | 
				
			||||||
	 * 	@value error 红色
 | 
					 | 
				
			||||||
	 * @property {String} size = [normal|small] Badge 大小
 | 
					 | 
				
			||||||
	 * 	@value normal 一般尺寸
 | 
					 | 
				
			||||||
	 * 	@value small 小尺寸
 | 
					 | 
				
			||||||
	 * @property {String} inverted = [true|false] 是否无需背景颜色
 | 
					 | 
				
			||||||
	 * @event {Function} click 点击 Badge 触发事件
 | 
					 | 
				
			||||||
	 * @example <uni-badge text="1"></uni-badge>
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniBadge',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'default'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			inverted: {
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			text: {
 | 
					 | 
				
			||||||
				type: [String, Number],
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			size: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'normal'
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				badgeStyle: ''
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		watch: {
 | 
					 | 
				
			||||||
			text() {
 | 
					 | 
				
			||||||
				this.setStyle()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		mounted() {
 | 
					 | 
				
			||||||
			this.setStyle()
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			setStyle() {
 | 
					 | 
				
			||||||
				this.badgeStyle = `width: ${String(this.text).length * 8 + 12}px`
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			onClick() {
 | 
					 | 
				
			||||||
				this.$emit('click');
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	$bage-size: 12px;
 | 
					 | 
				
			||||||
	$bage-small: scale(0.8);
 | 
					 | 
				
			||||||
	$bage-height: 20px;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge {
 | 
					 | 
				
			||||||
		/* #ifndef APP-PLUS */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		height: $bage-height;
 | 
					 | 
				
			||||||
		line-height: $bage-height;
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
		border-radius: 100px;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-hover;
 | 
					 | 
				
			||||||
		background-color: transparent;
 | 
					 | 
				
			||||||
		text-align: center;
 | 
					 | 
				
			||||||
		font-family: 'Helvetica Neue', Helvetica, sans-serif;
 | 
					 | 
				
			||||||
		font-size: $bage-size;
 | 
					 | 
				
			||||||
		padding: 0px 6px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--inverted {
 | 
					 | 
				
			||||||
		padding: 0 5px 0 0;
 | 
					 | 
				
			||||||
		color: $uni-bg-color-hover;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--default {
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-hover;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--default-inverted {
 | 
					 | 
				
			||||||
		color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
		background-color: transparent;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--primary {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-primary;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--primary-inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-primary;
 | 
					 | 
				
			||||||
		background-color: transparent;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--success {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-success;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--success-inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-success;
 | 
					 | 
				
			||||||
		background-color: transparent;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--warning {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-warning;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--warning-inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-warning;
 | 
					 | 
				
			||||||
		background-color: transparent;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--error {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-error;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--error-inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-error;
 | 
					 | 
				
			||||||
		background-color: transparent;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-badge--small {
 | 
					 | 
				
			||||||
		transform: $bage-small;
 | 
					 | 
				
			||||||
		transform-origin: center center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,170 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view v-if="visibleSync" :class="{ 'uni-drawer--visible': showDrawer }" class="uni-drawer" @touchmove.stop.prevent="clear">
 | 
					 | 
				
			||||||
		<view class="uni-drawer__mask" :class="{ 'uni-drawer__mask--visible': showDrawer && mask }" @tap="close('mask')" />
 | 
					 | 
				
			||||||
		<view class="uni-drawer__content" :class="{'uni-drawer--right': rightMode,'uni-drawer--left': !rightMode, 'uni-drawer__content--visible': showDrawer}" :style="{width:drawerWidth+'px'}">
 | 
					 | 
				
			||||||
			<slot />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Drawer 抽屉
 | 
					 | 
				
			||||||
	 * @description 抽屉侧滑菜单
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=26
 | 
					 | 
				
			||||||
	 * @property {Boolean} mask = [true | false] 是否显示遮罩
 | 
					 | 
				
			||||||
	 * @property {Boolean} maskClick = [true | false] 点击遮罩是否关闭
 | 
					 | 
				
			||||||
	 * @property {Boolean} mode = [left | right] Drawer 滑出位置
 | 
					 | 
				
			||||||
	 * 	@value left 从左侧滑出
 | 
					 | 
				
			||||||
	 * 	@value right 从右侧侧滑出
 | 
					 | 
				
			||||||
	 * @property {Number} width 抽屉的宽度 ,仅 vue 页面生效
 | 
					 | 
				
			||||||
	 * @event {Function} close 组件关闭时触发事件
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniDrawer',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 显示模式(左、右),只在初始化生效
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			mode: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 蒙层显示状态
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			mask: {
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: true
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 遮罩是否可点击关闭
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			maskClick:{
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: true
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 抽屉宽度
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			width: {
 | 
					 | 
				
			||||||
				type: Number,
 | 
					 | 
				
			||||||
				default: 220
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				visibleSync: false,
 | 
					 | 
				
			||||||
				showDrawer: false,
 | 
					 | 
				
			||||||
				rightMode: false,
 | 
					 | 
				
			||||||
				watchTimer: null,
 | 
					 | 
				
			||||||
				drawerWidth: 220
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			// #ifndef APP-NVUE
 | 
					 | 
				
			||||||
			this.drawerWidth = this.width
 | 
					 | 
				
			||||||
			// #endif
 | 
					 | 
				
			||||||
			this.rightMode = this.mode === 'right'
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			clear(){},
 | 
					 | 
				
			||||||
			close(type) {
 | 
					 | 
				
			||||||
				// fixed by mehaotian 抽屉尚未完全关闭或遮罩禁止点击时不触发以下逻辑
 | 
					 | 
				
			||||||
				if((type === 'mask' && !this.maskClick) || !this.visibleSync) return
 | 
					 | 
				
			||||||
				this._change('showDrawer', 'visibleSync', false)
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			open() {
 | 
					 | 
				
			||||||
				// fixed by mehaotian 处理重复点击打开的事件
 | 
					 | 
				
			||||||
				if(this.visibleSync) return
 | 
					 | 
				
			||||||
				this._change('visibleSync', 'showDrawer', true)
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			_change(param1, param2, status) {
 | 
					 | 
				
			||||||
				this[param1] = status
 | 
					 | 
				
			||||||
				if (this.watchTimer) {
 | 
					 | 
				
			||||||
					clearTimeout(this.watchTimer)
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				this.watchTimer = setTimeout(() => {
 | 
					 | 
				
			||||||
					this[param2] = status
 | 
					 | 
				
			||||||
					this.$emit('change',status)
 | 
					 | 
				
			||||||
				}, status ? 50 : 300)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	// 抽屉宽度
 | 
					 | 
				
			||||||
	$drawer-width: 220px;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		position: fixed;
 | 
					 | 
				
			||||||
		top: 0;
 | 
					 | 
				
			||||||
		left: 0;
 | 
					 | 
				
			||||||
		right: 0;
 | 
					 | 
				
			||||||
		bottom: 0;
 | 
					 | 
				
			||||||
		overflow: hidden;
 | 
					 | 
				
			||||||
		z-index: 999;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer__content {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
		top: 0;
 | 
					 | 
				
			||||||
		width: $drawer-width;
 | 
					 | 
				
			||||||
		bottom: 0;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		transition: transform 0.3s ease;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer--left {
 | 
					 | 
				
			||||||
		left: 0;
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		transform: translateX(-$drawer-width);
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		transform: translateX(-100%);
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer--right {
 | 
					 | 
				
			||||||
		right: 0;
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		transform: translateX($drawer-width);
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		transform: translateX(100%);
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer__content--visible {
 | 
					 | 
				
			||||||
		transform: translateX(0px);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer__mask {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		opacity: 0;
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
		top: 0;
 | 
					 | 
				
			||||||
		left: 0;
 | 
					 | 
				
			||||||
		bottom: 0;
 | 
					 | 
				
			||||||
		right: 0;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-mask;
 | 
					 | 
				
			||||||
		transition: opacity 0.3s;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-drawer__mask--visible {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,269 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<!-- #ifdef APP-NVUE -->
 | 
					 | 
				
			||||||
	<cell>
 | 
					 | 
				
			||||||
		<!-- #endif -->
 | 
					 | 
				
			||||||
		<view :class="disabled ? 'uni-list-item--disabled' : ''" :hover-class="disabled || showSwitch ? '' : 'uni-list-item--hover'" class="uni-list-item" @click="onClick">
 | 
					 | 
				
			||||||
			<view class="uni-list-item__container" :class="{ 'uni-list-item--first': isFirstChild }">
 | 
					 | 
				
			||||||
				<view v-if="thumb" class="uni-list-item__icon"><image :src="thumb" class="uni-list-item__icon-img" /></view>
 | 
					 | 
				
			||||||
				<view v-else-if="showExtraIcon" class="uni-list-item__icon">
 | 
					 | 
				
			||||||
					<uni-icons :color="extraIcon.color" :size="extraIcon.size" :type="extraIcon.type" class="uni-icon-wrapper" />
 | 
					 | 
				
			||||||
				</view>
 | 
					 | 
				
			||||||
				<view class="uni-list-item__content">
 | 
					 | 
				
			||||||
					<slot name="left"></slot>
 | 
					 | 
				
			||||||
					<text class="uni-list-item__content-title">{{ title }}</text>
 | 
					 | 
				
			||||||
					<text v-if="note" class="uni-list-item__content-note">{{ note }}</text>
 | 
					 | 
				
			||||||
				</view>
 | 
					 | 
				
			||||||
				<view class="uni-list-item__extra">
 | 
					 | 
				
			||||||
					<text v-if="rightText" class="uni-list-item__extra-text">{{ rightText }}</text>
 | 
					 | 
				
			||||||
					<uni-badge v-if="showBadge" :type="badgeType" :text="badgeText" />
 | 
					 | 
				
			||||||
					<switch v-if="showSwitch" :disabled="disabled" :checked="switchChecked" @change="onSwitchChange" />
 | 
					 | 
				
			||||||
					<slot name="right"></slot>
 | 
					 | 
				
			||||||
					<uni-icons v-if="showArrow" :size="20" class="uni-icon-wrapper" color="#bbb" type="arrowright" />
 | 
					 | 
				
			||||||
				</view>
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<!-- #ifdef APP-NVUE -->
 | 
					 | 
				
			||||||
	</cell>
 | 
					 | 
				
			||||||
	<!-- #endif -->
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
import uniIcons from '../uni-icons/uni-icons.vue';
 | 
					 | 
				
			||||||
import uniBadge from '../uni-badge/uni-badge.vue';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * ListItem 列表子组件
 | 
					 | 
				
			||||||
 * @description 列表子组件
 | 
					 | 
				
			||||||
 * @tutorial https://ext.dcloud.net.cn/plugin?id=24
 | 
					 | 
				
			||||||
 * @property {String} title 标题
 | 
					 | 
				
			||||||
 * @property {String} note 描述
 | 
					 | 
				
			||||||
 * @property {String} thumb 左侧缩略图,若thumb有值,则不会显示扩展图标
 | 
					 | 
				
			||||||
 * @property {String} badgeText 数字角标内容
 | 
					 | 
				
			||||||
 * @property {String} badgeType 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21)
 | 
					 | 
				
			||||||
 * @property {String} rightText 右侧文字内容
 | 
					 | 
				
			||||||
 * @property {Boolean} disabled = [true|false]是否禁用
 | 
					 | 
				
			||||||
 * @property {Boolean} showArrow = [true|false] 是否显示箭头图标
 | 
					 | 
				
			||||||
 * @property {Boolean} showBadge = [true|false] 是否显示数字角标
 | 
					 | 
				
			||||||
 * @property {Boolean} showSwitch = [true|false] 是否显示Switch
 | 
					 | 
				
			||||||
 * @property {Boolean} switchChecked = [true|false] Switch是否被选中
 | 
					 | 
				
			||||||
 * @property {Boolean} showExtraIcon = [true|false] 左侧是否显示扩展图标
 | 
					 | 
				
			||||||
 * @property {Boolean} scrollY = [true|false] 允许纵向滚动,需要显式的设置其宽高
 | 
					 | 
				
			||||||
 * @property {Object} extraIcon 扩展图标参数,格式为 {color: '#4cd964',size: '22',type: 'spinner'}
 | 
					 | 
				
			||||||
 * @event {Function} click 点击 uniListItem 触发事件
 | 
					 | 
				
			||||||
 * @event {Function} switchChange 点击切换 Switch 时触发
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
	name: 'UniListItem',
 | 
					 | 
				
			||||||
	components: {
 | 
					 | 
				
			||||||
		uniIcons,
 | 
					 | 
				
			||||||
		uniBadge
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	props: {
 | 
					 | 
				
			||||||
		title: {
 | 
					 | 
				
			||||||
			type: String,
 | 
					 | 
				
			||||||
			default: ''
 | 
					 | 
				
			||||||
		}, // 列表标题
 | 
					 | 
				
			||||||
		note: {
 | 
					 | 
				
			||||||
			type: String,
 | 
					 | 
				
			||||||
			default: ''
 | 
					 | 
				
			||||||
		}, // 列表描述
 | 
					 | 
				
			||||||
		disabled: {
 | 
					 | 
				
			||||||
			// 是否禁用
 | 
					 | 
				
			||||||
			type: [Boolean, String],
 | 
					 | 
				
			||||||
			default: false
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		showArrow: {
 | 
					 | 
				
			||||||
			// 是否显示箭头
 | 
					 | 
				
			||||||
			type: [Boolean, String],
 | 
					 | 
				
			||||||
			default: true
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		showBadge: {
 | 
					 | 
				
			||||||
			// 是否显示数字角标
 | 
					 | 
				
			||||||
			type: [Boolean, String],
 | 
					 | 
				
			||||||
			default: false
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		showSwitch: {
 | 
					 | 
				
			||||||
			// 是否显示Switch
 | 
					 | 
				
			||||||
			type: [Boolean, String],
 | 
					 | 
				
			||||||
			default: false
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		switchChecked: {
 | 
					 | 
				
			||||||
			// Switch是否被选中
 | 
					 | 
				
			||||||
			type: [Boolean, String],
 | 
					 | 
				
			||||||
			default: false
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		badgeText: {
 | 
					 | 
				
			||||||
			// badge内容
 | 
					 | 
				
			||||||
			type: String,
 | 
					 | 
				
			||||||
			default: ''
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		badgeType: {
 | 
					 | 
				
			||||||
			// badge类型
 | 
					 | 
				
			||||||
			type: String,
 | 
					 | 
				
			||||||
			default: 'success'
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		rightText: {
 | 
					 | 
				
			||||||
			// 右侧文字内容
 | 
					 | 
				
			||||||
			type: String,
 | 
					 | 
				
			||||||
			default: ''
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		thumb: {
 | 
					 | 
				
			||||||
			// 缩略图
 | 
					 | 
				
			||||||
			type: String,
 | 
					 | 
				
			||||||
			default: ''
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		showExtraIcon: {
 | 
					 | 
				
			||||||
			// 是否显示扩展图标
 | 
					 | 
				
			||||||
			type: [Boolean, String],
 | 
					 | 
				
			||||||
			default: false
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		extraIcon: {
 | 
					 | 
				
			||||||
			type: Object,
 | 
					 | 
				
			||||||
			default() {
 | 
					 | 
				
			||||||
				return {
 | 
					 | 
				
			||||||
					type: 'contact',
 | 
					 | 
				
			||||||
					color: '#000000',
 | 
					 | 
				
			||||||
					size: 20
 | 
					 | 
				
			||||||
				};
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	inject: ['list'],
 | 
					 | 
				
			||||||
	data() {
 | 
					 | 
				
			||||||
		return {
 | 
					 | 
				
			||||||
			isFirstChild: false
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	mounted() {
 | 
					 | 
				
			||||||
		if (!this.list.firstChildAppend) {
 | 
					 | 
				
			||||||
			this.list.firstChildAppend = true;
 | 
					 | 
				
			||||||
			this.isFirstChild = true;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	methods: {
 | 
					 | 
				
			||||||
		onClick() {
 | 
					 | 
				
			||||||
			this.$emit('click');
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		onSwitchChange(e) {
 | 
					 | 
				
			||||||
			this.$emit('switchChange', e.detail);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
$list-item-pd: $uni-spacing-col-lg $uni-spacing-row-lg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item {
 | 
					 | 
				
			||||||
	font-size: $uni-font-size-lg;
 | 
					 | 
				
			||||||
	position: relative;
 | 
					 | 
				
			||||||
	flex-direction: column;
 | 
					 | 
				
			||||||
	justify-content: space-between;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item--disabled {
 | 
					 | 
				
			||||||
	opacity: 0.3;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item--hover {
 | 
					 | 
				
			||||||
	background-color: $uni-bg-color-hover;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__container {
 | 
					 | 
				
			||||||
	line-height: 48rpx;
 | 
					 | 
				
			||||||
	position: relative;
 | 
					 | 
				
			||||||
	/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
	display: flex;
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
	flex-direction: row;
 | 
					 | 
				
			||||||
	padding: $list-item-pd;
 | 
					 | 
				
			||||||
	padding-left: 0;
 | 
					 | 
				
			||||||
	flex: 1;
 | 
					 | 
				
			||||||
	position: relative;
 | 
					 | 
				
			||||||
	justify-content: space-between;
 | 
					 | 
				
			||||||
	align-items: center;
 | 
					 | 
				
			||||||
	/* #ifdef APP-PLUS */
 | 
					 | 
				
			||||||
	border-top-color: $uni-border-color;
 | 
					 | 
				
			||||||
	border-top-style: solid;
 | 
					 | 
				
			||||||
	border-top-width: 0.5px;
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item--first {
 | 
					 | 
				
			||||||
	border-top-width: 0px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
.uni-list-item__container:after {
 | 
					 | 
				
			||||||
	position: absolute;
 | 
					 | 
				
			||||||
	top: 0;
 | 
					 | 
				
			||||||
	right: 0;
 | 
					 | 
				
			||||||
	left: 0;
 | 
					 | 
				
			||||||
	height: 1px;
 | 
					 | 
				
			||||||
	content: '';
 | 
					 | 
				
			||||||
	-webkit-transform: scaleY(0.5);
 | 
					 | 
				
			||||||
	transform: scaleY(0.5);
 | 
					 | 
				
			||||||
	background-color: $uni-border-color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item--first:after {
 | 
					 | 
				
			||||||
	height: 0px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* #endif */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__content {
 | 
					 | 
				
			||||||
	/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
	display: flex;
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
	flex: 1;
 | 
					 | 
				
			||||||
	overflow: hidden;
 | 
					 | 
				
			||||||
	flex-direction: column;
 | 
					 | 
				
			||||||
	color: #3b4144;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__content-title {
 | 
					 | 
				
			||||||
	font-size: $uni-font-size-base;
 | 
					 | 
				
			||||||
	color: #3b4144;
 | 
					 | 
				
			||||||
	overflow: hidden;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__content-note {
 | 
					 | 
				
			||||||
	margin-top: 6rpx;
 | 
					 | 
				
			||||||
	color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
	font-size: $uni-font-size-sm;
 | 
					 | 
				
			||||||
	overflow: hidden;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__extra {
 | 
					 | 
				
			||||||
	// width: 25%;
 | 
					 | 
				
			||||||
	/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
	display: flex;
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
	flex-direction: row;
 | 
					 | 
				
			||||||
	justify-content: flex-end;
 | 
					 | 
				
			||||||
	align-items: center;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__icon {
 | 
					 | 
				
			||||||
	display: flex;
 | 
					 | 
				
			||||||
	margin-right: 18rpx;
 | 
					 | 
				
			||||||
	flex-direction: row;
 | 
					 | 
				
			||||||
	justify-content: center;
 | 
					 | 
				
			||||||
	align-items: center;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	margin-left: 20rpx;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__icon-img {
 | 
					 | 
				
			||||||
	// height: $uni-img-size-base;
 | 
					 | 
				
			||||||
	// width: $uni-img-size-base;
 | 
					 | 
				
			||||||
	height: 38rpx;
 | 
					 | 
				
			||||||
	width: 38rpx;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.uni-list-item__extra-text {
 | 
					 | 
				
			||||||
	color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
	font-size: $uni-font-size-sm;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,75 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<!-- #ifndef APP-NVUE -->
 | 
					 | 
				
			||||||
	<view class="uni-list">
 | 
					 | 
				
			||||||
		<slot />
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
	<!-- #endif -->
 | 
					 | 
				
			||||||
	<!-- #ifdef APP-NVUE -->
 | 
					 | 
				
			||||||
	<list class="uni-list" :enableBackToTop="enableBackToTop" loadmoreoffset="15" :scroll-y="scrollY" @loadmore="loadMore">
 | 
					 | 
				
			||||||
		<slot />
 | 
					 | 
				
			||||||
	</list>
 | 
					 | 
				
			||||||
	<!-- #endif -->
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * List 列表
 | 
					 | 
				
			||||||
	 * @description 列表组件
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=24
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniList',
 | 
					 | 
				
			||||||
		'mp-weixin': {
 | 
					 | 
				
			||||||
			options: {
 | 
					 | 
				
			||||||
				multipleSlots: false
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			enableBackToTop: {
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			scrollY: {
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		provide() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				list: this
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			this.firstChildAppend = false
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			loadMore(e) {
 | 
					 | 
				
			||||||
				this.$emit("scrolltolower");
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-list {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		position: relative;
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
		// border-bottom-color: $uni-border-color;
 | 
					 | 
				
			||||||
		// border-bottom-style: solid;
 | 
					 | 
				
			||||||
		// border-bottom-width: 1px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
	.uni-list:before {
 | 
					 | 
				
			||||||
		height: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-list:after {
 | 
					 | 
				
			||||||
		height: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,65 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
    <!-- #ifdef APP-NVUE -->
 | 
					 | 
				
			||||||
    <refresh :display="display" @refresh="onrefresh" @pullingdown="onpullingdown">
 | 
					 | 
				
			||||||
        <slot />
 | 
					 | 
				
			||||||
    </refresh>
 | 
					 | 
				
			||||||
    <!-- #endif -->
 | 
					 | 
				
			||||||
    <!-- #ifndef APP-NVUE -->
 | 
					 | 
				
			||||||
    <view ref="uni-refresh" class="uni-refresh" v-show="isShow">
 | 
					 | 
				
			||||||
        <slot />
 | 
					 | 
				
			||||||
    </view>
 | 
					 | 
				
			||||||
    <!-- #endif -->
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    export default {
 | 
					 | 
				
			||||||
        name: 'UniRefresh',
 | 
					 | 
				
			||||||
        props: {
 | 
					 | 
				
			||||||
            display: {
 | 
					 | 
				
			||||||
                type: [String],
 | 
					 | 
				
			||||||
                default: "hide"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        data() {
 | 
					 | 
				
			||||||
            return {
 | 
					 | 
				
			||||||
                pulling: false
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        computed: {
 | 
					 | 
				
			||||||
            isShow() {
 | 
					 | 
				
			||||||
                if (this.display === "show" || this.pulling === true) {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                return false;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        created() {},
 | 
					 | 
				
			||||||
        methods: {
 | 
					 | 
				
			||||||
            onchange(value) {
 | 
					 | 
				
			||||||
                this.pulling = value;
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            onrefresh(e) {
 | 
					 | 
				
			||||||
                this.$emit("refresh", e);
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            onpullingdown(e) {
 | 
					 | 
				
			||||||
                // #ifdef APP-NVUE
 | 
					 | 
				
			||||||
                this.$emit("pullingdown", e);
 | 
					 | 
				
			||||||
                // #endif
 | 
					 | 
				
			||||||
                // #ifndef APP-NVUE
 | 
					 | 
				
			||||||
                var detail = {
 | 
					 | 
				
			||||||
                    viewHeight: 90,
 | 
					 | 
				
			||||||
                    pullingDistance: e.height
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                this.$emit("pullingdown", detail);
 | 
					 | 
				
			||||||
                // #endif
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style>
 | 
					 | 
				
			||||||
    .uni-refresh {
 | 
					 | 
				
			||||||
        height: 0;
 | 
					 | 
				
			||||||
        overflow: hidden;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,87 +0,0 @@
 | 
				
			||||||
var pullDown = {
 | 
					 | 
				
			||||||
    threshold: 95,
 | 
					 | 
				
			||||||
    maxHeight: 200,
 | 
					 | 
				
			||||||
    callRefresh: 'onrefresh',
 | 
					 | 
				
			||||||
    callPullingDown: 'onpullingdown',
 | 
					 | 
				
			||||||
    refreshSelector: '.uni-refresh'
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function ready(newValue, oldValue, ownerInstance, instance) {
 | 
					 | 
				
			||||||
    var state = instance.getState()
 | 
					 | 
				
			||||||
    state.canPullDown = newValue;
 | 
					 | 
				
			||||||
    // console.log(newValue);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function touchStart(e, instance) {
 | 
					 | 
				
			||||||
    var state = instance.getState();
 | 
					 | 
				
			||||||
    state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
 | 
					 | 
				
			||||||
    state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
 | 
					 | 
				
			||||||
    if (!state.canPullDown) {
 | 
					 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // console.log("touchStart");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    state.height = 0;
 | 
					 | 
				
			||||||
    state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
 | 
					 | 
				
			||||||
    state.refreshInstance.setStyle({
 | 
					 | 
				
			||||||
        'height': 0
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
    state.refreshInstance.callMethod("onchange", true);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function touchMove(e, ownerInstance) {
 | 
					 | 
				
			||||||
    var instance = e.instance;
 | 
					 | 
				
			||||||
    var state = instance.getState();
 | 
					 | 
				
			||||||
    if (!state.canPullDown) {
 | 
					 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var oldHeight = state.height;
 | 
					 | 
				
			||||||
    var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
 | 
					 | 
				
			||||||
    var height = endY - state.touchStartY;
 | 
					 | 
				
			||||||
    if (height > pullDown.maxHeight) {
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var refreshInstance = state.refreshInstance;
 | 
					 | 
				
			||||||
    refreshInstance.setStyle({
 | 
					 | 
				
			||||||
        'height': height + 'px'
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
 | 
					 | 
				
			||||||
    state.height = height;
 | 
					 | 
				
			||||||
    refreshInstance.callMethod(pullDown.callPullingDown, {
 | 
					 | 
				
			||||||
        height: height
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function touchEnd(e, ownerInstance) {
 | 
					 | 
				
			||||||
    var state = e.instance.getState();
 | 
					 | 
				
			||||||
    if (!state.canPullDown) {
 | 
					 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    state.refreshInstance.callMethod("onchange", false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    var refreshInstance = state.refreshInstance;
 | 
					 | 
				
			||||||
    if (state.height > pullDown.threshold) {
 | 
					 | 
				
			||||||
        refreshInstance.callMethod(pullDown.callRefresh);
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    refreshInstance.setStyle({
 | 
					 | 
				
			||||||
        'height': 0
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function propObserver(newValue, oldValue, instance) {
 | 
					 | 
				
			||||||
    pullDown = newValue;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
    touchmove: touchMove,
 | 
					 | 
				
			||||||
    touchstart: touchStart,
 | 
					 | 
				
			||||||
    touchend: touchEnd,
 | 
					 | 
				
			||||||
    propObserver: propObserver
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,395 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view v-if="show" class="uni-noticebar" :style="{ backgroundColor: backgroundColor }" @click="onClick">
 | 
					 | 
				
			||||||
		<!-- #ifdef MP-ALIPAY -->
 | 
					 | 
				
			||||||
		<view v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" @click="close">
 | 
					 | 
				
			||||||
			<uni-icons type="closeempty" :color="color" size="12" />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon">
 | 
					 | 
				
			||||||
			<uni-icons type="sound" :color="color" size="14" />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<!-- #endif -->
 | 
					 | 
				
			||||||
		<!-- #ifndef MP-ALIPAY -->
 | 
					 | 
				
			||||||
		<uni-icons v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close" type="closeempty" :color="color"
 | 
					 | 
				
			||||||
		 size="12" @click="close" />
 | 
					 | 
				
			||||||
		<uni-icons v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon" type="sound" :color="color"
 | 
					 | 
				
			||||||
		 size="14" />
 | 
					 | 
				
			||||||
		<!-- #endif -->
 | 
					 | 
				
			||||||
		<view ref="textBox" class="uni-noticebar__content-wrapper" :class="{'uni-noticebar__content-wrapper--scrollable':scrollable, 'uni-noticebar__content-wrapper--single':!scrollable && (single || moreText)}">
 | 
					 | 
				
			||||||
			<view :id="elIdBox" class="uni-noticebar__content" :class="{'uni-noticebar__content--scrollable':scrollable, 'uni-noticebar__content--single':!scrollable && (single || moreText)}">
 | 
					 | 
				
			||||||
				<text :id="elId" ref="animationEle" class="uni-noticebar__content-text" :class="{'uni-noticebar__content-text--scrollable':scrollable,'uni-noticebar__content-text--single':!scrollable && (single || moreText)}"
 | 
					 | 
				
			||||||
				 :style="{color:color, width:wrapWidth+'px', 'animationDuration': animationDuration, '-webkit-animationDuration': animationDuration ,animationPlayState: webviewHide?'paused':animationPlayState,'-webkit-animationPlayState':webviewHide?'paused':animationPlayState, animationDelay: animationDelay, '-webkit-animationDelay':animationDelay}">{{text}}</text>
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view v-if="showGetMore === true || showGetMore === 'true'" class="uni-noticebar__more" @click="clickMore">
 | 
					 | 
				
			||||||
			<text v-if="moreText" :style="{ color: moreColor }" class="uni-noticebar__more-text">{{ moreText }}</text>
 | 
					 | 
				
			||||||
			<uni-icons type="arrowright" :color="moreColor" size="14" />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	import uniIcons from '../uni-icons/uni-icons.vue'
 | 
					 | 
				
			||||||
	// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
	const dom = weex.requireModule('dom');
 | 
					 | 
				
			||||||
	const animation = weex.requireModule('animation');
 | 
					 | 
				
			||||||
	// #endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * NoticeBar 自定义导航栏
 | 
					 | 
				
			||||||
	 * @description 通告栏组件
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=30
 | 
					 | 
				
			||||||
	 * @property {Number} speed 文字滚动的速度,默认100px/秒
 | 
					 | 
				
			||||||
	 * @property {String} text 显示文字
 | 
					 | 
				
			||||||
	 * @property {String} backgroundColor 背景颜色
 | 
					 | 
				
			||||||
	 * @property {String} color 文字颜色
 | 
					 | 
				
			||||||
	 * @property {String} moreColor 查看更多文字的颜色
 | 
					 | 
				
			||||||
	 * @property {String} moreText 设置“查看更多”的文本
 | 
					 | 
				
			||||||
	 * @property {Boolean} single = [true|false] 是否单行
 | 
					 | 
				
			||||||
	 * @property {Boolean} scrollable = [true|false] 是否滚动,为true时,NoticeBar为单行
 | 
					 | 
				
			||||||
	 * @property {Boolean} showIcon = [true|false] 是否显示左侧喇叭图标
 | 
					 | 
				
			||||||
	 * @property {Boolean} showClose = [true|false] 是否显示左侧关闭按钮
 | 
					 | 
				
			||||||
	 * @property {Boolean} showGetMore = [true|false] 是否显示右侧查看更多图标,为true时,NoticeBar为单行
 | 
					 | 
				
			||||||
	 * @event {Function} click 点击 NoticeBar 触发事件
 | 
					 | 
				
			||||||
	 * @event {Function} close 关闭 NoticeBar 触发事件
 | 
					 | 
				
			||||||
	 * @event {Function} getmore 点击”查看更多“时触发事件
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniNoticeBar',
 | 
					 | 
				
			||||||
		components: {
 | 
					 | 
				
			||||||
			uniIcons
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			text: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			moreText: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			backgroundColor: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '#fffbe8'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			speed: {
 | 
					 | 
				
			||||||
				// 默认1s滚动100px
 | 
					 | 
				
			||||||
				type: Number,
 | 
					 | 
				
			||||||
				default: 100
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			color: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '#de8c17'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			moreColor: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '#999999'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			single: {
 | 
					 | 
				
			||||||
				// 是否单行
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			scrollable: {
 | 
					 | 
				
			||||||
				// 是否滚动,添加后控制单行效果取消
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			showIcon: {
 | 
					 | 
				
			||||||
				// 是否显示左侧icon
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			showGetMore: {
 | 
					 | 
				
			||||||
				// 是否显示右侧查看更多
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			showClose: {
 | 
					 | 
				
			||||||
				// 是否显示左侧关闭按钮
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
 | 
					 | 
				
			||||||
			const elIdBox = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				textWidth: 0,
 | 
					 | 
				
			||||||
				boxWidth: 0,
 | 
					 | 
				
			||||||
				wrapWidth: '',
 | 
					 | 
				
			||||||
				webviewHide: false,
 | 
					 | 
				
			||||||
				// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
				stopAnimation: false,
 | 
					 | 
				
			||||||
				// #endif
 | 
					 | 
				
			||||||
				elId: elId,
 | 
					 | 
				
			||||||
				elIdBox: elIdBox,
 | 
					 | 
				
			||||||
				show: true,
 | 
					 | 
				
			||||||
				animationDuration: 'none',
 | 
					 | 
				
			||||||
				animationPlayState: 'paused',
 | 
					 | 
				
			||||||
				animationDelay: '0s'
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		mounted() {
 | 
					 | 
				
			||||||
			// #ifdef APP-PLUS
 | 
					 | 
				
			||||||
			var pages = getCurrentPages();
 | 
					 | 
				
			||||||
			var page = pages[pages.length - 1];
 | 
					 | 
				
			||||||
			var currentWebview = page.$getAppWebview();
 | 
					 | 
				
			||||||
			currentWebview.addEventListener('hide',()=>{
 | 
					 | 
				
			||||||
				this.webviewHide = true
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
			currentWebview.addEventListener('show',()=>{
 | 
					 | 
				
			||||||
				this.webviewHide = false
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
			// #endif
 | 
					 | 
				
			||||||
			this.$nextTick(() => {
 | 
					 | 
				
			||||||
				this.initSize()
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
		beforeDestroy() {
 | 
					 | 
				
			||||||
			this.stopAnimation = true
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		// #endif
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			initSize() {
 | 
					 | 
				
			||||||
				if (this.scrollable) {
 | 
					 | 
				
			||||||
					// #ifndef APP-NVUE
 | 
					 | 
				
			||||||
					let query = [],
 | 
					 | 
				
			||||||
						boxWidth = 0,
 | 
					 | 
				
			||||||
						textWidth = 0;
 | 
					 | 
				
			||||||
					let textQuery = new Promise((resolve, reject) => {
 | 
					 | 
				
			||||||
						uni.createSelectorQuery()
 | 
					 | 
				
			||||||
							// #ifndef MP-ALIPAY
 | 
					 | 
				
			||||||
							.in(this)
 | 
					 | 
				
			||||||
							// #endif
 | 
					 | 
				
			||||||
							.select(`#${this.elId}`)
 | 
					 | 
				
			||||||
							.boundingClientRect()
 | 
					 | 
				
			||||||
							.exec(ret => {
 | 
					 | 
				
			||||||
								this.textWidth = ret[0].width
 | 
					 | 
				
			||||||
								resolve()
 | 
					 | 
				
			||||||
							})
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					let boxQuery = new Promise((resolve, reject) => {
 | 
					 | 
				
			||||||
						uni.createSelectorQuery()
 | 
					 | 
				
			||||||
							// #ifndef MP-ALIPAY
 | 
					 | 
				
			||||||
							.in(this)
 | 
					 | 
				
			||||||
							// #endif
 | 
					 | 
				
			||||||
							.select(`#${this.elIdBox}`)
 | 
					 | 
				
			||||||
							.boundingClientRect()
 | 
					 | 
				
			||||||
							.exec(ret => {
 | 
					 | 
				
			||||||
								this.boxWidth = ret[0].width
 | 
					 | 
				
			||||||
								resolve()
 | 
					 | 
				
			||||||
							})
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					query.push(textQuery)
 | 
					 | 
				
			||||||
					query.push(boxQuery)
 | 
					 | 
				
			||||||
					Promise.all(query).then(() => {
 | 
					 | 
				
			||||||
						this.animationDuration = `${this.textWidth / this.speed}s`
 | 
					 | 
				
			||||||
						this.animationDelay = `-${this.boxWidth / this.speed}s`
 | 
					 | 
				
			||||||
						setTimeout(() => {
 | 
					 | 
				
			||||||
							this.animationPlayState = 'running'
 | 
					 | 
				
			||||||
						}, 1000)
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					// #endif
 | 
					 | 
				
			||||||
					// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
					dom.getComponentRect(this.$refs['animationEle'], (res) => {
 | 
					 | 
				
			||||||
						let winWidth = uni.getSystemInfoSync().windowWidth
 | 
					 | 
				
			||||||
						this.textWidth = res.size.width
 | 
					 | 
				
			||||||
						animation.transition(this.$refs['animationEle'], {
 | 
					 | 
				
			||||||
							styles: {
 | 
					 | 
				
			||||||
								transform: `translateY(-${winWidth}px)`
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
							duration: 0,
 | 
					 | 
				
			||||||
							timingFunction: 'linear',
 | 
					 | 
				
			||||||
							delay: 0
 | 
					 | 
				
			||||||
						}, () => {
 | 
					 | 
				
			||||||
							if (!this.stopAnimation) {
 | 
					 | 
				
			||||||
								animation.transition(this.$refs['animationEle'], {
 | 
					 | 
				
			||||||
									styles: {
 | 
					 | 
				
			||||||
										transform: `translateY(-${this.textWidth}px)`
 | 
					 | 
				
			||||||
									},
 | 
					 | 
				
			||||||
									timingFunction: 'linear',
 | 
					 | 
				
			||||||
									duration: (this.textWidth - winWidth) / this.speed * 1000,
 | 
					 | 
				
			||||||
									delay: 1000
 | 
					 | 
				
			||||||
								}, () => {
 | 
					 | 
				
			||||||
									if (!this.stopAnimation) {
 | 
					 | 
				
			||||||
										this.loopAnimation()
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								});
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
						});
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					// #endif
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
				if (!this.scrollable && (this.single || this.moreText)) {
 | 
					 | 
				
			||||||
					dom.getComponentRect(this.$refs['textBox'], (res) => {
 | 
					 | 
				
			||||||
						this.wrapWidth = res.size.width
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				// #endif
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			loopAnimation() {
 | 
					 | 
				
			||||||
				// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
				animation.transition(this.$refs['animationEle'], {
 | 
					 | 
				
			||||||
					styles: {
 | 
					 | 
				
			||||||
						transform: `translateY(0px)`
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					duration: 0
 | 
					 | 
				
			||||||
				}, () => {
 | 
					 | 
				
			||||||
					if (!this.stopAnimation) {
 | 
					 | 
				
			||||||
						animation.transition(this.$refs['animationEle'], {
 | 
					 | 
				
			||||||
							styles: {
 | 
					 | 
				
			||||||
								transform: `translateY(-${this.textWidth}px)`
 | 
					 | 
				
			||||||
							},
 | 
					 | 
				
			||||||
							duration: this.textWidth / this.speed * 1000,
 | 
					 | 
				
			||||||
							timingFunction: 'linear',
 | 
					 | 
				
			||||||
							delay: 0
 | 
					 | 
				
			||||||
						}, () => {
 | 
					 | 
				
			||||||
							if (!this.stopAnimation) {
 | 
					 | 
				
			||||||
								this.loopAnimation()
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
						});
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				});
 | 
					 | 
				
			||||||
				// #endif
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			clickMore() {
 | 
					 | 
				
			||||||
				this.$emit('getmore')
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			close() {
 | 
					 | 
				
			||||||
				this.show = false;
 | 
					 | 
				
			||||||
				this.$emit('close')
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			onClick() {
 | 
					 | 
				
			||||||
				this.$emit('click')
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		width: 100%;
 | 
					 | 
				
			||||||
		box-sizing: border-box;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		padding: 6px 12px;
 | 
					 | 
				
			||||||
		margin-bottom: 10px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar-close {
 | 
					 | 
				
			||||||
		margin-right: 5px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar-icon {
 | 
					 | 
				
			||||||
		margin-right: 5px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content-wrapper {
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
		overflow: hidden;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content-wrapper--single {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		line-height: 18px;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content-wrapper--single,
 | 
					 | 
				
			||||||
	.uni-noticebar__content-wrapper--scrollable {
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
	.uni-noticebar__content-wrapper--scrollable {
 | 
					 | 
				
			||||||
		position: relative;
 | 
					 | 
				
			||||||
		height: 18px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content--scrollable {
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		flex: 0;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		overflow: hidden;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content--single {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		flex: none;
 | 
					 | 
				
			||||||
		width: 100%;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content-text {
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
		line-height: 18px;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		word-break: break-all;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content-text--single {
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		lines: 1;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		width: 100%;
 | 
					 | 
				
			||||||
		white-space: nowrap;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		overflow: hidden;
 | 
					 | 
				
			||||||
		text-overflow: ellipsis;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__content-text--scrollable {
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		lines: 1;
 | 
					 | 
				
			||||||
		padding-left: 750rpx;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		height: 18px;
 | 
					 | 
				
			||||||
		line-height: 18px;
 | 
					 | 
				
			||||||
		white-space: nowrap;
 | 
					 | 
				
			||||||
		padding-left: 100%;
 | 
					 | 
				
			||||||
		animation: notice 10s 0s linear infinite both;
 | 
					 | 
				
			||||||
		animation-play-state: paused;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__more {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: inline-flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		flex-wrap: nowrap;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		padding-left: 5px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-noticebar__more-text {
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	@keyframes notice {
 | 
					 | 
				
			||||||
		100% {
 | 
					 | 
				
			||||||
			transform: translate3d(-100%, 0, 0);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,29 +0,0 @@
 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
	created() {
 | 
					 | 
				
			||||||
		if (this.type === 'message') {
 | 
					 | 
				
			||||||
			// 获取自组件对象
 | 
					 | 
				
			||||||
			this.maskShow = false
 | 
					 | 
				
			||||||
			this.children = null
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	created() {
 | 
					 | 
				
			||||||
		if (this.type === 'message') {
 | 
					 | 
				
			||||||
			// 不显示遮罩
 | 
					 | 
				
			||||||
			this.maskShow = false 
 | 
					 | 
				
			||||||
			// 获取子组件对象
 | 
					 | 
				
			||||||
			this.childrenMsg = null
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	methods: {
 | 
					 | 
				
			||||||
		customOpen() {
 | 
					 | 
				
			||||||
			if (this.childrenMsg) {
 | 
					 | 
				
			||||||
				this.childrenMsg.open()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		customClose() {
 | 
					 | 
				
			||||||
			if (this.childrenMsg) {
 | 
					 | 
				
			||||||
				this.childrenMsg.close()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,24 +0,0 @@
 | 
				
			||||||
import message from './message.js';
 | 
					 | 
				
			||||||
// 定义 type 类型:弹出类型:top/bottom/center
 | 
					 | 
				
			||||||
const config = {
 | 
					 | 
				
			||||||
	// 顶部弹出
 | 
					 | 
				
			||||||
	top:'top',
 | 
					 | 
				
			||||||
	// 底部弹出
 | 
					 | 
				
			||||||
	bottom:'bottom',
 | 
					 | 
				
			||||||
	// 居中弹出
 | 
					 | 
				
			||||||
	center:'center',
 | 
					 | 
				
			||||||
	// 消息提示
 | 
					 | 
				
			||||||
	message:'top',
 | 
					 | 
				
			||||||
	// 对话框
 | 
					 | 
				
			||||||
	dialog:'center',
 | 
					 | 
				
			||||||
	// 分享
 | 
					 | 
				
			||||||
	share:'bottom',
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
	data(){
 | 
					 | 
				
			||||||
		return {
 | 
					 | 
				
			||||||
			config:config
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	mixins: [message],
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,243 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view class="uni-popup-dialog">
 | 
					 | 
				
			||||||
		<view class="uni-dialog-title">
 | 
					 | 
				
			||||||
			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{title}}</text>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view class="uni-dialog-content">
 | 
					 | 
				
			||||||
			<text class="uni-dialog-content-text" v-if="mode === 'base'">{{content}}</text>
 | 
					 | 
				
			||||||
			<input v-else class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholder" :focus="focus" >
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view class="uni-dialog-button-group">
 | 
					 | 
				
			||||||
			<view class="uni-dialog-button" @click="close">
 | 
					 | 
				
			||||||
				<text class="uni-dialog-button-text">取消</text>
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
			<view class="uni-dialog-button uni-border-left" @click="onOk">
 | 
					 | 
				
			||||||
				<text class="uni-dialog-button-text uni-button-color">确定</text>
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * PopUp 弹出层-对话框样式
 | 
					 | 
				
			||||||
	 * @description 弹出层-对话框样式
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
 | 
					 | 
				
			||||||
	 * @property {String} value input 模式下的默认值
 | 
					 | 
				
			||||||
	 * @property {String} placeholder input 模式下输入提示
 | 
					 | 
				
			||||||
	 * @property {String} type = [success|warning|info|error] 主题样式
 | 
					 | 
				
			||||||
	 *  @value success 成功
 | 
					 | 
				
			||||||
	 * 	@value warning 提示
 | 
					 | 
				
			||||||
	 * 	@value info 消息
 | 
					 | 
				
			||||||
	 * 	@value error 错误
 | 
					 | 
				
			||||||
	 * @property {String} mode = [base|input] 模式、
 | 
					 | 
				
			||||||
	 * 	@value base 基础对话框
 | 
					 | 
				
			||||||
	 * 	@value input 可输入对话框
 | 
					 | 
				
			||||||
	 * @property {String} content 对话框内容
 | 
					 | 
				
			||||||
	 * @property {Boolean} beforeClose 是否拦截取消事件
 | 
					 | 
				
			||||||
	 * @event {Function} confirm 点击确认按钮触发
 | 
					 | 
				
			||||||
	 * @event {Function} close 点击取消按钮触发
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: "uniPopupDialog",
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			value: {
 | 
					 | 
				
			||||||
				type: [String, Number],
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			placeholder: {
 | 
					 | 
				
			||||||
				type: [String, Number],
 | 
					 | 
				
			||||||
				default: '请输入内容'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 对话框主题 success/warning/info/error	  默认 success
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'error'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 对话框模式 base/input
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			mode: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'base'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 对话框标题
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			title: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '提示'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 对话框内容
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			content: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 拦截取消事件 ,如果拦截取消事件,必须监听close事件,执行 done()
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			beforeClose: {
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				dialogType: 'error',
 | 
					 | 
				
			||||||
				focus: false,
 | 
					 | 
				
			||||||
				val: ""
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		inject: ['popup'],
 | 
					 | 
				
			||||||
		watch: {
 | 
					 | 
				
			||||||
			type(val) {
 | 
					 | 
				
			||||||
				this.dialogType = val
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			mode(val) {
 | 
					 | 
				
			||||||
				if (val === 'input') {
 | 
					 | 
				
			||||||
					this.dialogType = 'info'
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			value(val) {
 | 
					 | 
				
			||||||
				this.val = val
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			// 对话框遮罩不可点击
 | 
					 | 
				
			||||||
			this.popup.mkclick = false
 | 
					 | 
				
			||||||
			if (this.mode === 'input') {
 | 
					 | 
				
			||||||
				this.dialogType = 'info'
 | 
					 | 
				
			||||||
				this.val = this.value
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				this.dialogType = this.type
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		mounted() {
 | 
					 | 
				
			||||||
			this.focus = true
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 点击确认按钮
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			onOk() {
 | 
					 | 
				
			||||||
				this.$emit('confirm', () => {
 | 
					 | 
				
			||||||
					this.popup.close()
 | 
					 | 
				
			||||||
					if (this.mode === 'input') this.val = this.value
 | 
					 | 
				
			||||||
				}, this.mode === 'input' ? this.val : '')
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 点击取消按钮
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			close() {
 | 
					 | 
				
			||||||
				if (this.beforeClose) {
 | 
					 | 
				
			||||||
					this.$emit('close', () => {
 | 
					 | 
				
			||||||
						this.popup.close()
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					return
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				this.popup.close()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-popup-dialog {
 | 
					 | 
				
			||||||
		width: 300px;
 | 
					 | 
				
			||||||
		border-radius: 15px;
 | 
					 | 
				
			||||||
		background-color: #fff;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-title {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		padding-top: 15px;
 | 
					 | 
				
			||||||
		padding-bottom: 5px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-title-text {
 | 
					 | 
				
			||||||
		font-size: 16px;
 | 
					 | 
				
			||||||
		font-weight: 500;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-content {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		padding: 5px 15px 15px 15px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-content-text {
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
		color: #6e6e6e;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-button-group {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		border-top-color: #f5f5f5;
 | 
					 | 
				
			||||||
		border-top-style: solid;
 | 
					 | 
				
			||||||
		border-top-width: 1px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-button {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		height: 45px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-border-left {
 | 
					 | 
				
			||||||
		border-left-color: #f0f0f0;
 | 
					 | 
				
			||||||
		border-left-style: solid;
 | 
					 | 
				
			||||||
		border-left-width: 1px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-button-text {
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-button-color {
 | 
					 | 
				
			||||||
		color: $uni-color-primary;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-dialog-input {
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__success {
 | 
					 | 
				
			||||||
		color: $uni-color-success;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__warn {
 | 
					 | 
				
			||||||
		color: $uni-color-warning;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__error {
 | 
					 | 
				
			||||||
		color: $uni-color-error;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__info {
 | 
					 | 
				
			||||||
		color: #909399;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,116 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view class="uni-popup-message" :class="'uni-popup__'+[type]">
 | 
					 | 
				
			||||||
		<text class="uni-popup-message-text" :class="'uni-popup__'+[type]+'-text'">{{message}}</text>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * PopUp 弹出层-消息提示
 | 
					 | 
				
			||||||
	 * @description 弹出层-消息提示
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
 | 
					 | 
				
			||||||
	 * @property {String} type = [success|warning|info|error] 主题样式
 | 
					 | 
				
			||||||
	 *  @value success 成功
 | 
					 | 
				
			||||||
	 * 	@value warning 提示
 | 
					 | 
				
			||||||
	 * 	@value info 消息
 | 
					 | 
				
			||||||
	 * 	@value error 错误
 | 
					 | 
				
			||||||
	 * @property {String} message 消息提示文字
 | 
					 | 
				
			||||||
	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniPopupMessage',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 主题 success/warning/info/error	  默认 success
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'success'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 消息文字
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			message: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 显示时间,设置为 0 则不会自动关闭
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			duration: {
 | 
					 | 
				
			||||||
				type: Number,
 | 
					 | 
				
			||||||
				default: 3000
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		inject: ['popup'],
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			this.popup.childrenMsg = this
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			open() {
 | 
					 | 
				
			||||||
				if (this.duration === 0) return
 | 
					 | 
				
			||||||
				clearTimeout(this.popuptimer)
 | 
					 | 
				
			||||||
				this.popuptimer = setTimeout(() => {
 | 
					 | 
				
			||||||
					this.popup.close()
 | 
					 | 
				
			||||||
				}, this.duration)
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			close() {
 | 
					 | 
				
			||||||
				clearTimeout(this.popuptimer)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-popup-message {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		background-color: #e1f3d8;
 | 
					 | 
				
			||||||
		padding: 10px 15px;
 | 
					 | 
				
			||||||
		border-color: #eee;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-width: 1px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	.uni-popup-message-text {
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
		padding: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__success {
 | 
					 | 
				
			||||||
		background-color: #e1f3d8;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__success-text {
 | 
					 | 
				
			||||||
		color: #67C23A;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__warn {
 | 
					 | 
				
			||||||
		background-color: #faecd8;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__warn-text {
 | 
					 | 
				
			||||||
		color: #E6A23C;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__error {
 | 
					 | 
				
			||||||
		background-color: #fde2e2;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__error-text {
 | 
					 | 
				
			||||||
		color: #F56C6C;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__info {
 | 
					 | 
				
			||||||
		background-color: #F2F6FC;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__info-text {
 | 
					 | 
				
			||||||
		color: #909399;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,165 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view class="uni-popup-share">
 | 
					 | 
				
			||||||
		<view class="uni-share-title"><text class="uni-share-title-text">{{title}}</text></view>
 | 
					 | 
				
			||||||
		<view class="uni-share-content">
 | 
					 | 
				
			||||||
			<view class="uni-share-content-box">
 | 
					 | 
				
			||||||
				<view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
 | 
					 | 
				
			||||||
					<image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
 | 
					 | 
				
			||||||
					<text class="uni-share-text">{{item.text}}</text>
 | 
					 | 
				
			||||||
				</view>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view class="uni-share-button-box">
 | 
					 | 
				
			||||||
			<button class="uni-share-button" @click="close">取消</button>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniPopupShare',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			title: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '分享到'
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		inject: ['popup'],
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				bottomData: [{
 | 
					 | 
				
			||||||
						text: '微信',
 | 
					 | 
				
			||||||
						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-2.png',
 | 
					 | 
				
			||||||
						name: 'wx'
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						text: '支付宝',
 | 
					 | 
				
			||||||
						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-8.png',
 | 
					 | 
				
			||||||
						name: 'wx'
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						text: 'QQ',
 | 
					 | 
				
			||||||
						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/gird-3.png',
 | 
					 | 
				
			||||||
						name: 'qq'
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						text: '新浪',
 | 
					 | 
				
			||||||
						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-1.png',
 | 
					 | 
				
			||||||
						name: 'sina'
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						text: '百度',
 | 
					 | 
				
			||||||
						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-7.png',
 | 
					 | 
				
			||||||
						name: 'copy'
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						text: '其他',
 | 
					 | 
				
			||||||
						icon: 'https://img-cdn-qiniu.dcloud.net.cn/uni-ui/grid-5.png',
 | 
					 | 
				
			||||||
						name: 'more'
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				]
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 选择内容
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			select(item, index) {
 | 
					 | 
				
			||||||
				this.$emit('select', {
 | 
					 | 
				
			||||||
					item,
 | 
					 | 
				
			||||||
					index
 | 
					 | 
				
			||||||
				}, () => {
 | 
					 | 
				
			||||||
					this.popup.close()
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 关闭窗口
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			close() {
 | 
					 | 
				
			||||||
				this.popup.close()
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-popup-share {
 | 
					 | 
				
			||||||
		background-color: #fff;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	.uni-share-title {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		height: 40px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	.uni-share-title-text {
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
		color: #666;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	.uni-share-content {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		padding-top: 10px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-content-box {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		flex-wrap: wrap;
 | 
					 | 
				
			||||||
		width: 360px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-content-item {
 | 
					 | 
				
			||||||
		width: 90px;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		padding: 10px 0;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-content-item:active {
 | 
					 | 
				
			||||||
		background-color: #f5f5f5;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-image {
 | 
					 | 
				
			||||||
		width: 30px;
 | 
					 | 
				
			||||||
		height: 30px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-text {
 | 
					 | 
				
			||||||
		margin-top: 10px;
 | 
					 | 
				
			||||||
		font-size: 14px;
 | 
					 | 
				
			||||||
		color: #3B4144;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-button-box {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		padding: 10px 15px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-button {
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		border-radius: 50px;
 | 
					 | 
				
			||||||
		color: #666;
 | 
					 | 
				
			||||||
		font-size: 16px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-share-button::after {
 | 
					 | 
				
			||||||
		border-radius: 50px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,294 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view v-if="showPopup" class="uni-popup" :class="[popupstyle]" @touchmove.stop.prevent="clear">
 | 
					 | 
				
			||||||
		<uni-transition v-if="maskShow" :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans"
 | 
					 | 
				
			||||||
		 @click="onTap" />
 | 
					 | 
				
			||||||
		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
 | 
					 | 
				
			||||||
			<view class="uni-popup__wrapper-box" @click.stop="clear">
 | 
					 | 
				
			||||||
				<slot />
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
		</uni-transition>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	import uniTransition from '../uni-transition/uni-transition.vue'
 | 
					 | 
				
			||||||
	import popup from './popup.js'
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * PopUp 弹出层
 | 
					 | 
				
			||||||
	 * @description 弹出层组件,为了解决遮罩弹层的问题
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
 | 
					 | 
				
			||||||
	 * @property {String} type = [top|center|bottom] 弹出方式
 | 
					 | 
				
			||||||
	 * 	@value top 顶部弹出
 | 
					 | 
				
			||||||
	 * 	@value center 中间弹出
 | 
					 | 
				
			||||||
	 * 	@value bottom 底部弹出
 | 
					 | 
				
			||||||
	 * 	@value message 消息提示
 | 
					 | 
				
			||||||
	 * 	@value dialog 对话框
 | 
					 | 
				
			||||||
	 * 	@value share 底部分享示例
 | 
					 | 
				
			||||||
	 * @property {Boolean} animation = [ture|false] 是否开启动画
 | 
					 | 
				
			||||||
	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
 | 
					 | 
				
			||||||
	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniPopup',
 | 
					 | 
				
			||||||
		components: {
 | 
					 | 
				
			||||||
			uniTransition
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			// 开启动画
 | 
					 | 
				
			||||||
			animation: {
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: true
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
 | 
					 | 
				
			||||||
			// message: 消息提示 ; dialog : 对话框
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'center'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// maskClick
 | 
					 | 
				
			||||||
			maskClick: {
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: true
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		provide() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				popup: this
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		mixins: [popup],
 | 
					 | 
				
			||||||
		watch: {
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 监听type类型
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				handler: function(newVal) {
 | 
					 | 
				
			||||||
					this[this.config[newVal]]()
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				immediate: true
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 监听遮罩是否可点击
 | 
					 | 
				
			||||||
			 * @param {Object} val
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			maskClick(val) {
 | 
					 | 
				
			||||||
				this.mkclick = val
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				duration: 300,
 | 
					 | 
				
			||||||
				ani: [],
 | 
					 | 
				
			||||||
				showPopup: false,
 | 
					 | 
				
			||||||
				showTrans: false,
 | 
					 | 
				
			||||||
				maskClass: {
 | 
					 | 
				
			||||||
					'position': 'fixed',
 | 
					 | 
				
			||||||
					'bottom': 0,
 | 
					 | 
				
			||||||
					'top': 0,
 | 
					 | 
				
			||||||
					'left': 0,
 | 
					 | 
				
			||||||
					'right': 0,
 | 
					 | 
				
			||||||
					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				transClass: {
 | 
					 | 
				
			||||||
					'position': 'fixed',
 | 
					 | 
				
			||||||
					'left': 0,
 | 
					 | 
				
			||||||
					'right': 0,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				maskShow: true,
 | 
					 | 
				
			||||||
				mkclick: true,
 | 
					 | 
				
			||||||
				popupstyle: 'top'
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			this.mkclick = this.maskClick
 | 
					 | 
				
			||||||
			if (this.animation) {
 | 
					 | 
				
			||||||
				this.duration = 300
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				this.duration = 0
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			clear(e) {
 | 
					 | 
				
			||||||
				// TODO nvue 取消冒泡
 | 
					 | 
				
			||||||
				e.stopPropagation()
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			open() {
 | 
					 | 
				
			||||||
				this.showPopup = true
 | 
					 | 
				
			||||||
				this.$nextTick(() => {
 | 
					 | 
				
			||||||
					new Promise(resolve => {
 | 
					 | 
				
			||||||
						clearTimeout(this.timer)
 | 
					 | 
				
			||||||
						this.timer = setTimeout(() => {
 | 
					 | 
				
			||||||
							this.showTrans = true
 | 
					 | 
				
			||||||
							// fixed by mehaotian 兼容 app 端
 | 
					 | 
				
			||||||
							this.$nextTick(() => {
 | 
					 | 
				
			||||||
								resolve();
 | 
					 | 
				
			||||||
							})
 | 
					 | 
				
			||||||
						}, 50);
 | 
					 | 
				
			||||||
					}).then(res => {
 | 
					 | 
				
			||||||
						// 自定义打开事件
 | 
					 | 
				
			||||||
						clearTimeout(this.msgtimer)
 | 
					 | 
				
			||||||
						this.msgtimer = setTimeout(() => {
 | 
					 | 
				
			||||||
							this.customOpen && this.customOpen()
 | 
					 | 
				
			||||||
						}, 100)
 | 
					 | 
				
			||||||
						this.$emit('change', {
 | 
					 | 
				
			||||||
							show: true,
 | 
					 | 
				
			||||||
							type: this.type
 | 
					 | 
				
			||||||
						})
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			close(type) {
 | 
					 | 
				
			||||||
				this.showTrans = false
 | 
					 | 
				
			||||||
				this.$nextTick(() => {
 | 
					 | 
				
			||||||
					this.$emit('change', {
 | 
					 | 
				
			||||||
						show: false,
 | 
					 | 
				
			||||||
						type: this.type
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					clearTimeout(this.timer)
 | 
					 | 
				
			||||||
					// 自定义关闭事件
 | 
					 | 
				
			||||||
					this.customOpen && this.customClose()
 | 
					 | 
				
			||||||
					this.timer = setTimeout(() => {
 | 
					 | 
				
			||||||
						this.showPopup = false
 | 
					 | 
				
			||||||
					}, 300)
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			onTap() {
 | 
					 | 
				
			||||||
				if (!this.mkclick) return
 | 
					 | 
				
			||||||
				this.close()
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 顶部弹出样式处理
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			top() {
 | 
					 | 
				
			||||||
				this.popupstyle = 'top'
 | 
					 | 
				
			||||||
				this.ani = ['slide-top']
 | 
					 | 
				
			||||||
				this.transClass = {
 | 
					 | 
				
			||||||
					'position': 'fixed',
 | 
					 | 
				
			||||||
					'left': 0,
 | 
					 | 
				
			||||||
					'right': 0,
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 底部弹出样式处理
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			bottom() {
 | 
					 | 
				
			||||||
				this.popupstyle = 'bottom'
 | 
					 | 
				
			||||||
				this.ani = ['slide-bottom']
 | 
					 | 
				
			||||||
				this.transClass = {
 | 
					 | 
				
			||||||
					'position': 'fixed',
 | 
					 | 
				
			||||||
					'left': 0,
 | 
					 | 
				
			||||||
					'right': 0,
 | 
					 | 
				
			||||||
					'bottom': 0
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			/**
 | 
					 | 
				
			||||||
			 * 中间弹出样式处理
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			center() {
 | 
					 | 
				
			||||||
				this.popupstyle = 'center'
 | 
					 | 
				
			||||||
				this.ani = ['zoom-out', 'fade']
 | 
					 | 
				
			||||||
				this.transClass = {
 | 
					 | 
				
			||||||
					'position': 'fixed',
 | 
					 | 
				
			||||||
					/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
					'display': 'flex',
 | 
					 | 
				
			||||||
					'flexDirection': 'column',
 | 
					 | 
				
			||||||
					/* #endif */
 | 
					 | 
				
			||||||
					'bottom': 0,
 | 
					 | 
				
			||||||
					'left': 0,
 | 
					 | 
				
			||||||
					'right': 0,
 | 
					 | 
				
			||||||
					'top': 0,
 | 
					 | 
				
			||||||
					'justifyContent': 'center',
 | 
					 | 
				
			||||||
					'alignItems': 'center'
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-popup {
 | 
					 | 
				
			||||||
		position: fixed;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		z-index: 99;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__mask {
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
		top: 0;
 | 
					 | 
				
			||||||
		bottom: 0;
 | 
					 | 
				
			||||||
		left: 0;
 | 
					 | 
				
			||||||
		right: 0;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-mask;
 | 
					 | 
				
			||||||
		opacity: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.mask-ani {
 | 
					 | 
				
			||||||
		transition-property: opacity;
 | 
					 | 
				
			||||||
		transition-duration: 0.2s;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-top-mask {
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-bottom-mask {
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-center-mask {
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__wrapper {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.top {
 | 
					 | 
				
			||||||
		/* #ifdef H5 */
 | 
					 | 
				
			||||||
		top: var(--window-top);
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifndef H5 */
 | 
					 | 
				
			||||||
		top: 0;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.bottom {
 | 
					 | 
				
			||||||
		bottom: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-popup__wrapper-box {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: block;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		position: relative;
 | 
					 | 
				
			||||||
		/* iphonex 等安全区设置,底部安全区适配 */
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		padding-bottom: constant(safe-area-inset-bottom);
 | 
					 | 
				
			||||||
		padding-bottom: env(safe-area-inset-bottom);
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.content-ani {
 | 
					 | 
				
			||||||
		// transition: transform 0.3s;
 | 
					 | 
				
			||||||
		transition-property: transform, opacity;
 | 
					 | 
				
			||||||
		transition-duration: 0.2s;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-top-content {
 | 
					 | 
				
			||||||
		transform: translateY(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-bottom-content {
 | 
					 | 
				
			||||||
		transform: translateY(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-center-content {
 | 
					 | 
				
			||||||
		transform: scale(1);
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,135 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view class="uni-section" nvue>
 | 
					 | 
				
			||||||
		<view v-if="type" class="uni-section__head">
 | 
					 | 
				
			||||||
			<view :class="type" class="uni-section__head-tag" />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view class="uni-section__content">
 | 
					 | 
				
			||||||
			<text :class="{'distraction':!subTitle}" class="uni-section__content-title">{{ title }}</text>
 | 
					 | 
				
			||||||
			<text v-if="subTitle" class="uni-section__content-sub">{{ subTitle }}</text>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<slot />
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Section 标题栏
 | 
					 | 
				
			||||||
	 * @description 标题栏
 | 
					 | 
				
			||||||
	 * @property {String} type = [line|circle] 标题装饰类型
 | 
					 | 
				
			||||||
	 * 	@value line 竖线
 | 
					 | 
				
			||||||
	 * 	@value circle 圆形
 | 
					 | 
				
			||||||
	 * @property {String} title 主标题
 | 
					 | 
				
			||||||
	 * @property {String} subTitle 副标题
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniTitle',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			title: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			subTitle: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		watch: {
 | 
					 | 
				
			||||||
			title(newVal) {
 | 
					 | 
				
			||||||
				if (uni.report && newVal !== '') {
 | 
					 | 
				
			||||||
					uni.report('title', newVal)
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			onClick() {
 | 
					 | 
				
			||||||
				this.$emit('click')
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-section {
 | 
					 | 
				
			||||||
		position: relative;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		margin-top: 10px;
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		padding: 0 10px;
 | 
					 | 
				
			||||||
		height: 50px;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-grey;
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		border-bottom-color: $uni-border-color;
 | 
					 | 
				
			||||||
		border-bottom-style: solid;
 | 
					 | 
				
			||||||
		border-bottom-width: 0.5px;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		font-weight: normal;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
	.uni-section:after {
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
		bottom: 0;
 | 
					 | 
				
			||||||
		right: 0;
 | 
					 | 
				
			||||||
		left: 0;
 | 
					 | 
				
			||||||
		height: 1px;
 | 
					 | 
				
			||||||
		content: '';
 | 
					 | 
				
			||||||
		-webkit-transform: scaleY(.5);
 | 
					 | 
				
			||||||
		transform: scaleY(.5);
 | 
					 | 
				
			||||||
		background-color: $uni-border-color;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/* #endif */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-section__head {
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		margin-right: 10px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.line {
 | 
					 | 
				
			||||||
		height: 15px;
 | 
					 | 
				
			||||||
		background-color: $uni-text-color-disable;
 | 
					 | 
				
			||||||
		border-radius: 5px;
 | 
					 | 
				
			||||||
		width: 3px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.circle {
 | 
					 | 
				
			||||||
		width: 8px;
 | 
					 | 
				
			||||||
		height: 8px;
 | 
					 | 
				
			||||||
		border-top-right-radius: 50px;
 | 
					 | 
				
			||||||
		border-top-left-radius: 50px;
 | 
					 | 
				
			||||||
		border-bottom-left-radius: 50px;
 | 
					 | 
				
			||||||
		border-bottom-right-radius: 50px;
 | 
					 | 
				
			||||||
		background-color: $uni-text-color-disable;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-section__content {
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-section__content-title {
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-base;
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.distraction {
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-section__content-sub {
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-sm;
 | 
					 | 
				
			||||||
		color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,253 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view class="uni-steps">
 | 
					 | 
				
			||||||
		<view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']">
 | 
					 | 
				
			||||||
			<view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']">
 | 
					 | 
				
			||||||
				<view v-for="(item,index) in options" :key="index" :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']">
 | 
					 | 
				
			||||||
					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.title}}</text>
 | 
					 | 
				
			||||||
					<text v-if="direction=='column'" :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.desc}}</text>
 | 
					 | 
				
			||||||
				</view>
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
			<view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']">
 | 
					 | 
				
			||||||
				<view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']" v-for="(item,index) in options"
 | 
					 | 
				
			||||||
				 :key="index">
 | 
					 | 
				
			||||||
					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']"
 | 
					 | 
				
			||||||
					 :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}"></view>
 | 
					 | 
				
			||||||
					<view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']" v-if="index === active">
 | 
					 | 
				
			||||||
						<uni-icons :color="activeColor" type="checkbox-filled" size="14"></uni-icons>
 | 
					 | 
				
			||||||
					</view>
 | 
					 | 
				
			||||||
					<view :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']" v-else :style="{backgroundColor:index<active?activeColor:deactiveColor}"></view>
 | 
					 | 
				
			||||||
					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']"
 | 
					 | 
				
			||||||
					 :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}"></view>
 | 
					 | 
				
			||||||
					<!-- <view v-if="index==0 && direction!='column'" class="address">北京市</view>
 | 
					 | 
				
			||||||
					<view v-if="options.length-1 == index && direction!='column'" class="address">太原市</view> -->
 | 
					 | 
				
			||||||
				</view>
 | 
					 | 
				
			||||||
			</view>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	import uniIcons from '../uni-icons/uni-icons.vue'
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniSteps',
 | 
					 | 
				
			||||||
		components: {
 | 
					 | 
				
			||||||
			uniIcons
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			direction: {
 | 
					 | 
				
			||||||
				// 排列方向 row column
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'row'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			activeColor: {
 | 
					 | 
				
			||||||
				// 激活状态颜色
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '#1aad19'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			deactiveColor: {
 | 
					 | 
				
			||||||
				// 未激活状态颜色
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: '#999999'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			active: {
 | 
					 | 
				
			||||||
				// 当前步骤
 | 
					 | 
				
			||||||
				type: Number,
 | 
					 | 
				
			||||||
				default: 0
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			options: {
 | 
					 | 
				
			||||||
				type: Array,
 | 
					 | 
				
			||||||
				default () {
 | 
					 | 
				
			||||||
					return []
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			} // 数据
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-steps {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		width: 100%;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		/* #ifdef APP-NVUE */
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row-reverse;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-text-container {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-text-container {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-text {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: inline-flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-text {
 | 
					 | 
				
			||||||
		padding: 6px 0px;
 | 
					 | 
				
			||||||
		// border-bottom-style: solid;
 | 
					 | 
				
			||||||
		// border-bottom-width: 1px;
 | 
					 | 
				
			||||||
		// border-bottom-color: $uni-border-color;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-title {
 | 
					 | 
				
			||||||
		font-size: 24rpx;
 | 
					 | 
				
			||||||
		line-height: 16px;
 | 
					 | 
				
			||||||
		text-align: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-title {
 | 
					 | 
				
			||||||
		font-size: 24rpx;
 | 
					 | 
				
			||||||
		text-align: left;
 | 
					 | 
				
			||||||
		line-height: 18px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-desc {
 | 
					 | 
				
			||||||
		font-size: 12px;
 | 
					 | 
				
			||||||
		line-height: 14px;
 | 
					 | 
				
			||||||
		text-align: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-desc {
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-sm;
 | 
					 | 
				
			||||||
		text-align: left;
 | 
					 | 
				
			||||||
		line-height: 18px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-container {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-container {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: inline-flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		width: 30px;
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-line-item {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: inline-flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		height: 14px;
 | 
					 | 
				
			||||||
		line-height: 14px;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		position: relative;
 | 
					 | 
				
			||||||
		.address{
 | 
					 | 
				
			||||||
			position: absolute;
 | 
					 | 
				
			||||||
			top: 40rpx;
 | 
					 | 
				
			||||||
			left: 60rpx;
 | 
					 | 
				
			||||||
			color: #999;
 | 
					 | 
				
			||||||
			font-size: 24rpx;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-line-item {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-line {
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		height: 1px;
 | 
					 | 
				
			||||||
		background-color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-line {
 | 
					 | 
				
			||||||
		width: 1px;
 | 
					 | 
				
			||||||
		background-color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-line--after {
 | 
					 | 
				
			||||||
		transform: translateX(1px);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-line--after {
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		transform: translate(0px, 1px);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-line--before {
 | 
					 | 
				
			||||||
		transform: translateX(-1px);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-line--before {
 | 
					 | 
				
			||||||
		height: 6px;
 | 
					 | 
				
			||||||
		transform: translate(0px, -1px);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-circle {
 | 
					 | 
				
			||||||
		width: 5px;
 | 
					 | 
				
			||||||
		height: 5px;
 | 
					 | 
				
			||||||
		border-radius: 100px;
 | 
					 | 
				
			||||||
		background-color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
		margin: 0px 3px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-circle {
 | 
					 | 
				
			||||||
		width: 5px;
 | 
					 | 
				
			||||||
		height: 5px;
 | 
					 | 
				
			||||||
		border-radius: 100px;
 | 
					 | 
				
			||||||
		background-color: $uni-text-color-grey;
 | 
					 | 
				
			||||||
		margin: 4px 0px 5px 0px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__row-check {
 | 
					 | 
				
			||||||
		margin: 0px 6px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-steps__column-check {
 | 
					 | 
				
			||||||
		height: 14px;
 | 
					 | 
				
			||||||
		line-height: 14px;
 | 
					 | 
				
			||||||
		margin: 2px 0px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,184 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view class="uni-swiper__warp">
 | 
					 | 
				
			||||||
		<slot />
 | 
					 | 
				
			||||||
		<view v-if="mode === 'default'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='default'>
 | 
					 | 
				
			||||||
			<view v-for="(item,index) in info" :style="{
 | 
					 | 
				
			||||||
        'width': (index === current? dots.width*2:dots.width ) + 'px','height':dots.width/3 +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border-radius':'0px'}"
 | 
					 | 
				
			||||||
			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-bar" />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view v-if="mode === 'dot'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='dot'>
 | 
					 | 
				
			||||||
			<view v-for="(item,index) in info" :style="{
 | 
					 | 
				
			||||||
        'width': dots.width + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
 | 
					 | 
				
			||||||
			 :key="index" class="uni-swiper__dots-item" />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view v-if="mode === 'round'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='round'>
 | 
					 | 
				
			||||||
			<view v-for="(item,index) in info" :class="[index === current&&'uni-swiper__dots-long']" :style="{
 | 
					 | 
				
			||||||
		    'width':(index === current? dots.width*3:dots.width ) + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
 | 
					 | 
				
			||||||
			 :key="index" class="uni-swiper__dots-item " />
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view v-if="mode === 'nav'" key='nav' :style="{'background-color':dotsStyles.backgroundColor,'bottom':'0'}" class="uni-swiper__dots-box uni-swiper__dots-nav">
 | 
					 | 
				
			||||||
			<text :style="{'color':dotsStyles.color}" class="uni-swiper__dots-nav-item">{{ (current+1)+"/"+info.length +' ' +info[current][field] }}</text>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
		<view v-if="mode === 'indexes'" key='indexes' :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box">
 | 
					 | 
				
			||||||
			<view v-for="(item,index) in info" :style="{
 | 
					 | 
				
			||||||
        'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
 | 
					 | 
				
			||||||
			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-indexes"><text class="uni-swiper__dots-indexes-text">{{ index+1 }}</text></view>
 | 
					 | 
				
			||||||
		</view>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'UniSwiperDot',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			info: {
 | 
					 | 
				
			||||||
				type: Array,
 | 
					 | 
				
			||||||
				default () {
 | 
					 | 
				
			||||||
					return []
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			current: {
 | 
					 | 
				
			||||||
				type: Number,
 | 
					 | 
				
			||||||
				default: 0
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			dotsStyles: {
 | 
					 | 
				
			||||||
				type: Object,
 | 
					 | 
				
			||||||
				default () {
 | 
					 | 
				
			||||||
					return {}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// 类型 :default(默认) indexes long nav
 | 
					 | 
				
			||||||
			mode: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: 'default'
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// 只在 nav 模式下生效,变量名称
 | 
					 | 
				
			||||||
			field: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ''
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				dots: {
 | 
					 | 
				
			||||||
					width: 8,
 | 
					 | 
				
			||||||
					height: 8,
 | 
					 | 
				
			||||||
					bottom: 10,
 | 
					 | 
				
			||||||
					color: '#fff',
 | 
					 | 
				
			||||||
					backgroundColor: 'rgba(0, 0, 0, .3)',
 | 
					 | 
				
			||||||
					border: '1px rgba(0, 0, 0, .3) solid',
 | 
					 | 
				
			||||||
					selectedBackgroundColor: '#333',
 | 
					 | 
				
			||||||
					selectedBorder: '1px rgba(0, 0, 0, .9) solid'
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		watch: {
 | 
					 | 
				
			||||||
			dotsStyles(newVal) {
 | 
					 | 
				
			||||||
				this.dots = Object.assign(this.dots, this.dotsStyles)
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			mode(newVal) {
 | 
					 | 
				
			||||||
				if (newVal === 'indexes') {
 | 
					 | 
				
			||||||
					this.dots.width = 20
 | 
					 | 
				
			||||||
					this.dots.height = 20
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					this.dots.width = 8
 | 
					 | 
				
			||||||
					this.dots.height = 8
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			if (this.mode === 'indexes') {
 | 
					 | 
				
			||||||
				this.dots.width = 20
 | 
					 | 
				
			||||||
				this.dots.height = 20
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			this.dots = Object.assign(this.dots, this.dotsStyles)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	.uni-swiper__warp {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		flex-direction: column;
 | 
					 | 
				
			||||||
		position: relative;
 | 
					 | 
				
			||||||
		overflow: hidden;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-box {
 | 
					 | 
				
			||||||
		position: absolute;
 | 
					 | 
				
			||||||
		bottom: 10px;
 | 
					 | 
				
			||||||
		left: 0;
 | 
					 | 
				
			||||||
		right: 0;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-item {
 | 
					 | 
				
			||||||
		width: 8px;
 | 
					 | 
				
			||||||
		border-radius: 100px;
 | 
					 | 
				
			||||||
		margin-left: 6px;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-mask;
 | 
					 | 
				
			||||||
		// transition: width 0.2s linear;  不要取消注释,不然会不能变色
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	.uni-swiper__dots-item:first-child {
 | 
					 | 
				
			||||||
		margin: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-default {
 | 
					 | 
				
			||||||
		border-radius: 100px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-long {
 | 
					 | 
				
			||||||
		border-radius: 50px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-bar {
 | 
					 | 
				
			||||||
		border-radius: 50px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-nav {
 | 
					 | 
				
			||||||
		bottom: 0px;
 | 
					 | 
				
			||||||
		height: 40px;
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		flex: 1;
 | 
					 | 
				
			||||||
		flex-direction: row;
 | 
					 | 
				
			||||||
		justify-content: flex-start;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
		background-color: rgba(0, 0, 0, 0.2);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-nav-item {
 | 
					 | 
				
			||||||
		/* overflow: hidden;
 | 
					 | 
				
			||||||
    text-overflow: ellipsis;
 | 
					 | 
				
			||||||
    white-space: nowrap; */
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-base;
 | 
					 | 
				
			||||||
		color: #fff;
 | 
					 | 
				
			||||||
		margin: 0 15px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-indexes {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		// flex: 1;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		align-items: center;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-swiper__dots-indexes-text {
 | 
					 | 
				
			||||||
		color: #fff;
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-sm;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,230 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view :class="[
 | 
					 | 
				
			||||||
      'uni-tag--' + type,
 | 
					 | 
				
			||||||
      disabled === true || disabled === 'true' ? 'uni-tag--disabled' : '',
 | 
					 | 
				
			||||||
      inverted === true || inverted === 'true' ? type + '-uni-tag--inverted' : '',
 | 
					 | 
				
			||||||
      circle === true || circle === 'true' ? 'uni-tag--circle' : '',
 | 
					 | 
				
			||||||
      mark === true || mark === 'true' ? 'uni-tag--mark' : '',
 | 
					 | 
				
			||||||
      'uni-tag--' + size
 | 
					 | 
				
			||||||
    ]"
 | 
					 | 
				
			||||||
	 @click="onClick()" class="uni-tag" v-if="text">
 | 
					 | 
				
			||||||
		<text :class="[type === 'default' ? 'uni-tag--default':'uni-tag-text',inverted === true || inverted === 'true' ? 'uni-tag-text--'+type : '',size === 'small' ? 'uni-tag-text--small':'' ]">{{ text }}</text>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Tag 标签
 | 
					 | 
				
			||||||
	 * @description 用于展示1个或多个文字标签,可点击切换选中、不选中的状态
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=35
 | 
					 | 
				
			||||||
	 * @property {String} text 标签内容
 | 
					 | 
				
			||||||
	 * @property {String} size = [normal|small] 大小尺寸
 | 
					 | 
				
			||||||
	 * 	@value normal 正常
 | 
					 | 
				
			||||||
	 * 	@value small 小尺寸
 | 
					 | 
				
			||||||
	 * @property {String} type = [default|primary|success|warning|error|royal]  颜色类型
 | 
					 | 
				
			||||||
	 * 	@value default 灰色
 | 
					 | 
				
			||||||
	 * 	@value primary 蓝色
 | 
					 | 
				
			||||||
	 * 	@value success 绿色
 | 
					 | 
				
			||||||
	 * 	@value warning 黄色
 | 
					 | 
				
			||||||
	 * 	@value error 红色
 | 
					 | 
				
			||||||
	 * 	@value royal 紫色
 | 
					 | 
				
			||||||
	 * @property {Boolean} disabled = [true|false] 是否为禁用状态
 | 
					 | 
				
			||||||
	 * @property {Boolean} inverted = [true|false] 是否无需背景颜色(空心标签)
 | 
					 | 
				
			||||||
	 * @property {Boolean} circle = [true|false] 是否为圆角
 | 
					 | 
				
			||||||
	 * @event {Function} click 点击 Tag 触发事件
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: "UniTag",
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			type: {
 | 
					 | 
				
			||||||
				// 标签类型default、primary、success、warning、error、royal
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: "default"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			size: {
 | 
					 | 
				
			||||||
				// 标签大小 normal, small
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: "normal"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// 标签内容
 | 
					 | 
				
			||||||
			text: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				default: ""
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			disabled: {
 | 
					 | 
				
			||||||
				// 是否为禁用状态
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			inverted: {
 | 
					 | 
				
			||||||
				// 是否为空心
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			circle: {
 | 
					 | 
				
			||||||
				// 是否为圆角样式
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			mark: {
 | 
					 | 
				
			||||||
				// 是否为标记样式
 | 
					 | 
				
			||||||
				type: [Boolean, String],
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			onClick() {
 | 
					 | 
				
			||||||
				if (this.disabled === true || this.disabled === "true") {
 | 
					 | 
				
			||||||
					return;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				this.$emit("click");
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style lang="scss" scoped>
 | 
					 | 
				
			||||||
	$tag-pd: 0px 16px;
 | 
					 | 
				
			||||||
	$tag-small-pd: 0px 8px;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag {
 | 
					 | 
				
			||||||
		/* #ifndef APP-NVUE */
 | 
					 | 
				
			||||||
		display: flex;
 | 
					 | 
				
			||||||
		/* #endif */
 | 
					 | 
				
			||||||
		padding: $tag-pd;
 | 
					 | 
				
			||||||
		height: 30px;
 | 
					 | 
				
			||||||
		line-height: 30px;
 | 
					 | 
				
			||||||
		justify-content: center;
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
		border-radius: $uni-border-radius-base;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color-grey;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-bg-color-grey;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--circle {
 | 
					 | 
				
			||||||
		border-radius: 15px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--mark {
 | 
					 | 
				
			||||||
		border-top-left-radius: 0;
 | 
					 | 
				
			||||||
		border-bottom-left-radius: 0;
 | 
					 | 
				
			||||||
		border-top-right-radius: 15px;
 | 
					 | 
				
			||||||
		border-bottom-right-radius: 15px;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--disabled {
 | 
					 | 
				
			||||||
		opacity: 0.5;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--small {
 | 
					 | 
				
			||||||
		height: 20px;
 | 
					 | 
				
			||||||
		padding: $tag-small-pd;
 | 
					 | 
				
			||||||
		line-height: 20px;
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-sm;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--default {
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-base;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag-text--small {
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-sm !important;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag-text {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		font-size: $uni-font-size-base;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag-text--primary {
 | 
					 | 
				
			||||||
		color: $uni-color-primary !important;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag-text--success {
 | 
					 | 
				
			||||||
		color: $uni-color-success !important;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag-text--warning {
 | 
					 | 
				
			||||||
		color: $uni-color-warning !important;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag-text--error {
 | 
					 | 
				
			||||||
		color: $uni-color-error !important;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--primary {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-primary;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-primary;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.primary-uni-tag--inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-primary;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-primary;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--success {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-success;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-success;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.success-uni-tag--inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-success;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-success;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--warning {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-warning;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-warning;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.warning-uni-tag--inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-warning;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-warning;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--error {
 | 
					 | 
				
			||||||
		color: $uni-text-color-inverse;
 | 
					 | 
				
			||||||
		background-color: $uni-color-error;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-error;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.error-uni-tag--inverted {
 | 
					 | 
				
			||||||
		color: $uni-color-error;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-color-error;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.uni-tag--inverted {
 | 
					 | 
				
			||||||
		color: $uni-text-color;
 | 
					 | 
				
			||||||
		background-color: $uni-bg-color;
 | 
					 | 
				
			||||||
		border-width: 1rpx;
 | 
					 | 
				
			||||||
		border-style: solid;
 | 
					 | 
				
			||||||
		border-color: $uni-bg-color-grey;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,279 +0,0 @@
 | 
				
			||||||
<template>
 | 
					 | 
				
			||||||
	<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
 | 
					 | 
				
			||||||
	 @click="change">
 | 
					 | 
				
			||||||
		 <slot></slot>
 | 
					 | 
				
			||||||
	</view>
 | 
					 | 
				
			||||||
</template>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
	// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
	const animation = uni.requireNativePlugin('animation');
 | 
					 | 
				
			||||||
	// #endif
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Transition 过渡动画
 | 
					 | 
				
			||||||
	 * @description 简单过渡动画组件
 | 
					 | 
				
			||||||
	 * @tutorial https://ext.dcloud.net.cn/plugin?id=985
 | 
					 | 
				
			||||||
	 * @property {Boolean} show = [false|true] 控制组件显示或隐藏
 | 
					 | 
				
			||||||
     * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
 | 
					 | 
				
			||||||
     *  @value fade 渐隐渐出过渡
 | 
					 | 
				
			||||||
     *  @value slide-top 由上至下过渡
 | 
					 | 
				
			||||||
     *  @value slide-right 由右至左过渡
 | 
					 | 
				
			||||||
     *  @value slide-bottom 由下至上过渡
 | 
					 | 
				
			||||||
     *  @value slide-left 由左至右过渡
 | 
					 | 
				
			||||||
     *  @value zoom-in 由小到大过渡
 | 
					 | 
				
			||||||
     *  @value zoom-out 由大到小过渡
 | 
					 | 
				
			||||||
	 * @property {Number} duration 过渡动画持续时间
 | 
					 | 
				
			||||||
	 * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	export default {
 | 
					 | 
				
			||||||
		name: 'uniTransition',
 | 
					 | 
				
			||||||
		props: {
 | 
					 | 
				
			||||||
			show: {
 | 
					 | 
				
			||||||
				type: Boolean,
 | 
					 | 
				
			||||||
				default: false
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			modeClass: {
 | 
					 | 
				
			||||||
				type: Array,
 | 
					 | 
				
			||||||
				default () {
 | 
					 | 
				
			||||||
					return []
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			duration: {
 | 
					 | 
				
			||||||
				type: Number,
 | 
					 | 
				
			||||||
				default: 300
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			styles: {
 | 
					 | 
				
			||||||
				type: Object,
 | 
					 | 
				
			||||||
				default () {
 | 
					 | 
				
			||||||
					return {}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		data() {
 | 
					 | 
				
			||||||
			return {
 | 
					 | 
				
			||||||
				isShow: false,
 | 
					 | 
				
			||||||
				transform: '',
 | 
					 | 
				
			||||||
				ani: { in: '',
 | 
					 | 
				
			||||||
					active: ''
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		watch: {
 | 
					 | 
				
			||||||
			show: {
 | 
					 | 
				
			||||||
				handler(newVal) {
 | 
					 | 
				
			||||||
					if (newVal) {
 | 
					 | 
				
			||||||
						this.open()
 | 
					 | 
				
			||||||
					} else {
 | 
					 | 
				
			||||||
						this.close()
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				immediate: true
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		computed: {
 | 
					 | 
				
			||||||
			stylesObject() {
 | 
					 | 
				
			||||||
				let styles = {
 | 
					 | 
				
			||||||
					...this.styles,
 | 
					 | 
				
			||||||
					'transition-duration': this.duration / 1000 + 's'
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				let transfrom = ''
 | 
					 | 
				
			||||||
				for (let i in styles) {
 | 
					 | 
				
			||||||
					let line = this.toLine(i)
 | 
					 | 
				
			||||||
					transfrom += line + ':' + styles[i] + ';'
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				return transfrom
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		created() {
 | 
					 | 
				
			||||||
			// this.timer = null
 | 
					 | 
				
			||||||
			// this.nextTick = (time = 50) => new Promise(resolve => {
 | 
					 | 
				
			||||||
			// 	clearTimeout(this.timer)
 | 
					 | 
				
			||||||
			// 	this.timer = setTimeout(resolve, time)
 | 
					 | 
				
			||||||
			// 	return this.timer
 | 
					 | 
				
			||||||
			// });
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		methods: {
 | 
					 | 
				
			||||||
			change() {
 | 
					 | 
				
			||||||
				this.$emit('click', {
 | 
					 | 
				
			||||||
					detail: this.isShow
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			open() {
 | 
					 | 
				
			||||||
				clearTimeout(this.timer)
 | 
					 | 
				
			||||||
				this.isShow = true
 | 
					 | 
				
			||||||
				this.transform = ''
 | 
					 | 
				
			||||||
				this.ani.in = ''
 | 
					 | 
				
			||||||
				for (let i in this.getTranfrom(false)) {
 | 
					 | 
				
			||||||
					if (i === 'opacity') {
 | 
					 | 
				
			||||||
						this.ani.in = 'fade-in'
 | 
					 | 
				
			||||||
					} else {
 | 
					 | 
				
			||||||
						this.transform += `${this.getTranfrom(false)[i]} `
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				this.$nextTick(() => {
 | 
					 | 
				
			||||||
					setTimeout(() => {
 | 
					 | 
				
			||||||
						this._animation(true)
 | 
					 | 
				
			||||||
					}, 50)
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			close(type) {
 | 
					 | 
				
			||||||
				clearTimeout(this.timer)
 | 
					 | 
				
			||||||
				this._animation(false)
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			_animation(type) {
 | 
					 | 
				
			||||||
				let styles = this.getTranfrom(type)
 | 
					 | 
				
			||||||
				// #ifdef APP-NVUE
 | 
					 | 
				
			||||||
				if(!this.$refs['ani']) return
 | 
					 | 
				
			||||||
				animation.transition(this.$refs['ani'].ref, {
 | 
					 | 
				
			||||||
					styles,
 | 
					 | 
				
			||||||
					duration: this.duration, //ms
 | 
					 | 
				
			||||||
					timingFunction: 'ease',
 | 
					 | 
				
			||||||
					needLayout: false,
 | 
					 | 
				
			||||||
					delay: 0 //ms
 | 
					 | 
				
			||||||
				}, () => {
 | 
					 | 
				
			||||||
					if (!type) {
 | 
					 | 
				
			||||||
						this.isShow = false
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					this.$emit('change', {
 | 
					 | 
				
			||||||
						detail: this.isShow
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
				// #endif
 | 
					 | 
				
			||||||
				// #ifndef APP-NVUE
 | 
					 | 
				
			||||||
				this.transform = ''
 | 
					 | 
				
			||||||
				for (let i in styles) {
 | 
					 | 
				
			||||||
					if (i === 'opacity') {
 | 
					 | 
				
			||||||
						this.ani.in = `fade-${type?'out':'in'}`
 | 
					 | 
				
			||||||
					} else {
 | 
					 | 
				
			||||||
						this.transform += `${styles[i]} `
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				this.timer = setTimeout(() => {
 | 
					 | 
				
			||||||
					if (!type) {
 | 
					 | 
				
			||||||
						this.isShow = false
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					this.$emit('change', {
 | 
					 | 
				
			||||||
						detail: this.isShow
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				}, this.duration)
 | 
					 | 
				
			||||||
				// #endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			getTranfrom(type) {
 | 
					 | 
				
			||||||
				let styles = {
 | 
					 | 
				
			||||||
					transform: ''
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				this.modeClass.forEach((mode) => {
 | 
					 | 
				
			||||||
					switch (mode) {
 | 
					 | 
				
			||||||
						case 'fade':
 | 
					 | 
				
			||||||
							styles.opacity = type ? 1 : 0
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						case 'slide-top':
 | 
					 | 
				
			||||||
							styles.transform += `translateY(${type?'0':'-100%'}) `
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						case 'slide-right':
 | 
					 | 
				
			||||||
							styles.transform += `translateX(${type?'0':'100%'}) `
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						case 'slide-bottom':
 | 
					 | 
				
			||||||
							styles.transform += `translateY(${type?'0':'100%'}) `
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						case 'slide-left':
 | 
					 | 
				
			||||||
							styles.transform += `translateX(${type?'0':'-100%'}) `
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						case 'zoom-in':
 | 
					 | 
				
			||||||
							styles.transform += `scale(${type?1:0.8}) `
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
						case 'zoom-out':
 | 
					 | 
				
			||||||
							styles.transform += `scale(${type?1:1.2}) `
 | 
					 | 
				
			||||||
							break;
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
				return styles
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			_modeClassArr(type) {
 | 
					 | 
				
			||||||
				let mode = this.modeClass
 | 
					 | 
				
			||||||
				if (typeof(mode) !== "string") {
 | 
					 | 
				
			||||||
					let modestr = ''
 | 
					 | 
				
			||||||
					mode.forEach((item) => {
 | 
					 | 
				
			||||||
						modestr += (item + '-' + type + ',')
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
					return modestr.substr(0, modestr.length - 1)
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					return mode + '-' + type
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// getEl(el) {
 | 
					 | 
				
			||||||
			// 	console.log(el || el.ref || null);
 | 
					 | 
				
			||||||
			// 	return el || el.ref || null
 | 
					 | 
				
			||||||
			// },
 | 
					 | 
				
			||||||
			toLine(name) {
 | 
					 | 
				
			||||||
				return name.replace(/([A-Z])/g, "-$1").toLowerCase();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<style>
 | 
					 | 
				
			||||||
	.uni-transition {
 | 
					 | 
				
			||||||
		transition-timing-function: ease;
 | 
					 | 
				
			||||||
		transition-duration: 0.3s;
 | 
					 | 
				
			||||||
		transition-property: transform, opacity;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.fade-in {
 | 
					 | 
				
			||||||
		opacity: 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.fade-active {
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-top-in {
 | 
					 | 
				
			||||||
		/* transition-property: transform, opacity; */
 | 
					 | 
				
			||||||
		transform: translateY(-100%);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-top-active {
 | 
					 | 
				
			||||||
		transform: translateY(0);
 | 
					 | 
				
			||||||
		/* opacity: 1; */
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-right-in {
 | 
					 | 
				
			||||||
		transform: translateX(100%);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-right-active {
 | 
					 | 
				
			||||||
		transform: translateX(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-bottom-in {
 | 
					 | 
				
			||||||
		transform: translateY(100%);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-bottom-active {
 | 
					 | 
				
			||||||
		transform: translateY(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-left-in {
 | 
					 | 
				
			||||||
		transform: translateX(-100%);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.slide-left-active {
 | 
					 | 
				
			||||||
		transform: translateX(0);
 | 
					 | 
				
			||||||
		opacity: 1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.zoom-in-in {
 | 
					 | 
				
			||||||
		transform: scale(0.8);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.zoom-out-active {
 | 
					 | 
				
			||||||
		transform: scale(1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	.zoom-out-in {
 | 
					 | 
				
			||||||
		transform: scale(1.2);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -6,10 +6,7 @@
 | 
				
			||||||
const dev = {
 | 
					const dev = {
 | 
				
			||||||
  common: "https://common-api.pickmall.cn",
 | 
					  common: "https://common-api.pickmall.cn",
 | 
				
			||||||
  buyer: "https://buyer-api.pickmall.cn",
 | 
					  buyer: "https://buyer-api.pickmall.cn",
 | 
				
			||||||
//   common: "http://192.168.0.101:8890",
 | 
					
 | 
				
			||||||
//   buyer: "http://192.168.0.101:8888",
 | 
					 | 
				
			||||||
//   seller: "http://192.168.0.101:8889",
 | 
					 | 
				
			||||||
//   manager: "http://192.168.0.101:8887",
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
// 生产环境
 | 
					// 生产环境
 | 
				
			||||||
const prod = {
 | 
					const prod = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,11 +30,8 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import uniSteps from "@/components/uni-steps/uni-steps.vue";
 | 
					 | 
				
			||||||
import { getExpress } from "@/api/trade.js";
 | 
					import { getExpress } from "@/api/trade.js";
 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  components: { uniSteps },
 | 
					 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      express: "",
 | 
					      express: "",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue