| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | <template>	<view		class="u-notice"		@tap="clickHandler"	>		<slot name="icon">			<view				class="u-notice__left-icon"				v-if="icon"			>				<u-icon					:name="icon"					:color="color"					size="19"				></u-icon>			</view>		</slot>		<swiper			:disable-touch="disableTouch"			:vertical="step ? false : true"			circular			:interval="duration"			:autoplay="true"			class="u-notice__swiper"		>			<swiper-item				v-for="(item, index) in text"				:key="index"				class="u-notice__swiper__item"			>				<text					class="u-notice__swiper__item__text u-line-1"					:style="[textStyle]"				>{{ item }}</text>			</swiper-item>		</swiper>		<view			class="u-notice__right-icon"			v-if="['link', 'closable'].includes(mode)"		>			<u-icon				v-if="mode === 'link'"				name="arrow-right"				:size="17"				:color="color"			></u-icon>			<u-icon				v-if="mode === 'closable'"				name="close"				:size="16"				:color="color"				@click="close"			></u-icon>		</view>	</view></template><script>	import props from './props.js';	/**	 * ColumnNotice 滚动通知中的垂直滚动 内部组件	 * @description 该组件用于滚动通告场景,是其中的垂直滚动方式	 * @tutorial https://www.uviewui.com/components/noticeBar.html	 * @property {Array}			text 			显示的内容,字符串	 * @property {String}			icon 			是否显示左侧的音量图标 ( 默认 'volume' )	 * @property {String}			mode 			通告模式,link-显示右箭头,closable-显示右侧关闭图标	 * @property {String}			color 			文字颜色,各图标也会使用文字颜色 ( 默认 '#f9ae3d' )	 * @property {String}			bgColor 		背景颜色 ( 默认 '#fdf6ec' )	 * @property {String | Number}	fontSize		字体大小,单位px  ( 默认 14 )	 * @property {String | Number}	speed			水平滚动时的滚动速度,即每秒滚动多少px(rpx),这有利于控制文字无论多少时,都能有一个恒定的速度 ( 默认 80 )	 * @property {Boolean}			step			direction = row时,是否使用步进形式滚动 ( 默认 false )	 * @property {String | Number}	duration		滚动一个周期的时间长,单位ms ( 默认 1500 )	 * @property {Boolean}			disableTouch	是否禁止用手滑动切换   目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 ( 默认 true )	 * @example 	 */	export default {		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],		watch: {			text: {				immediate: true,				handler(newValue, oldValue) {					if(!uni.$u.test.array(newValue)) {						uni.$u.error('column模式要求text参数为数组')					}				}			}		},		computed: {			// 文字内容的样式			textStyle() {				let style = {}				style.color = this.color				style.fontSize = uni.$u.addUnit(this.fontSize)				return style			},			// 垂直或者水平滚动			vertical() {				if (this.mode == 'horizontal') return false				else return true			},		},		data() {			return {			}		},		methods: {			// 点击通告栏			clickHandler(index) {				this.$emit('click', index)			},			// 点击关闭按钮			close() {				this.$emit('close')			}		}	};</script><style lang="scss" scoped>	@import "../../libs/css/components.scss";	.u-notice {		@include flex;		align-items: center;		justify-content: space-between;		&__left-icon {			align-items: center;			margin-right: 5px;		}		&__right-icon {			margin-left: 5px;			align-items: center;		}		&__swiper {			height: 16px;			@include flex;			align-items: center;			flex: 1;			&__item {				@include flex;				align-items: center;				overflow: hidden;				&__text {					font-size: 14px;					color: $u-warning;				}			}		}	}</style>
 |