Blame view

node_modules/uview-ui/components/u-column-notice/u-column-notice.vue 4.94 KB
c7add6cf   “wangming”   初始版本开发完毕
1
2
  <template>
  	<view
25852764   unknown   s
3
4
5
6
7
8
9
10
  		class="u-notice-bar"
  		:style="{
  			background: computeBgColor,
  			padding: padding
  		}"
  		:class="[
  			type ? `u-type-${type}-light-bg` : ''
  		]"
c7add6cf   “wangming”   初始版本开发完毕
11
  	>
25852764   unknown   s
12
13
14
15
16
17
18
  		<view class="u-icon-wrap">
  			<u-icon class="u-left-icon" v-if="volumeIcon" name="volume-fill" :size="volumeSize" :color="computeColor"></u-icon>
  		</view>
  		<swiper :disable-touch="disableTouch" @change="change" :autoplay="autoplay && playState == 'play'" :vertical="vertical" circular :interval="duration" class="u-swiper">
  			<swiper-item v-for="(item, index) in list" :key="index" class="u-swiper-item">
  				<view
  					class="u-news-item u-line-1"
c7add6cf   “wangming”   初始版本开发完毕
19
  					:style="[textStyle]"
25852764   unknown   s
20
21
22
23
24
  					@tap="click(index)"
  					:class="['u-type-' + type]"
  				>
  					{{ item }}
  				</view>
c7add6cf   “wangming”   初始版本开发完毕
25
26
  			</swiper-item>
  		</swiper>
25852764   unknown   s
27
28
29
  		<view class="u-icon-wrap">
  			<u-icon @click="getMore" class="u-right-icon" v-if="moreIcon" name="arrow-right" :size="26" :color="computeColor"></u-icon>
  			<u-icon @click="close" class="u-right-icon" v-if="closeIcon" name="close" :size="24" :color="computeColor"></u-icon>
c7add6cf   “wangming”   初始版本开发完毕
30
31
32
33
34
  		</view>
  	</view>
  </template>
  
  <script>
25852764   unknown   s
35
36
37
38
39
40
41
  export default {
  	props: {
  		// 显示的内容,数组
  		list: {
  			type: Array,
  			default() {
  				return [];
c7add6cf   “wangming”   初始版本开发完毕
42
43
  			}
  		},
25852764   unknown   s
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  		// 显示的主题,success|error|primary|info|warning
  		type: {
  			type: String,
  			default: 'warning'
  		},
  		// 是否显示左侧的音量图标
  		volumeIcon: {
  			type: Boolean,
  			default: true
  		},
  		// 是否显示右侧的右箭头图标
  		moreIcon: {
  			type: Boolean,
  			default: false
  		},
  		// 是否显示右侧的关闭图标
  		closeIcon: {
  			type: Boolean,
  			default: false
  		},
  		// 是否自动播放
  		autoplay: {
  			type: Boolean,
  			default: true
  		},
  		// 文字颜色,各图标也会使用文字颜色
  		color: {
  			type: String,
  			default: ''
  		},
  		// 背景颜色
  		bgColor: {
  			type: String,
  			default: ''
  		},
  		// 滚动方向,row-水平滚动,column-垂直滚动
  		direction: {
  			type: String,
  			default: 'row'
  		},
  		// 是否显示
  		show: {
  			type: Boolean,
  			default: true
  		},
  		// 字体大小,单位rpx
  		fontSize: {
  			type: [Number, String],
  			default: 26
  		},
  		// 滚动一个周期的时间长,单位ms
  		duration: {
  			type: [Number, String],
  			default: 2000
  		},
  		// 音量喇叭的大小
  		volumeSize: {
  			type: [Number, String],
  			default: 34
  		},
  		// 水平滚动时的滚动速度,即每秒滚动多少rpx,这有利于控制文字无论多少时,都能有一个恒定的速度
  		speed: {
  			type: Number,
  			default: 160
  		},
  		// 水平滚动时,是否采用衔接形式滚动
  		isCircular: {
  			type: Boolean,
  			default: true
  		},
  		// 滚动方向,horizontal-水平滚动,vertical-垂直滚动
  		mode: {
  			type: String,
  			default: 'horizontal'
c7add6cf   “wangming”   初始版本开发完毕
118
  		},
25852764   unknown   s
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
  		// 播放状态,play-播放,paused-暂停
  		playState: {
  			type: String,
  			default: 'play'
  		},
  		// 是否禁止用手滑动切换
  		// 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序
  		disableTouch: {
  			type: Boolean,
  			default: true
  		},
  		// 通知的边距
  		padding: {
  			type: [Number, String],
  			default: '18rpx 24rpx'
  		}
  	},
  	computed: {
  		// 计算字体颜色,如果没有自定义的,就用uview主题颜色
  		computeColor() {
  			if (this.color) return this.color;
  			// 如果是无主题,就默认使用content-color
  			else if(this.type == 'none') return '#606266';
  			else return this.type;
  		},
  		// 文字内容的样式
  		textStyle() {
  			let style = {};
  			if (this.color) style.color = this.color;
  			else if(this.type == 'none') style.color = '#606266';
  			style.fontSize = this.fontSize + 'rpx';
  			return style;
  		},
  		// 垂直或者水平滚动
  		vertical() {
  			if(this.mode == 'horizontal') return false;
  			else return true;
  		},
  		// 计算背景颜色
  		computeBgColor() {
  			if (this.bgColor) return this.bgColor;
  			else if(this.type == 'none') return 'transparent';
  		}
  	},
  	data() {
  		return {
  			// animation: false
  		};
  	},
  	methods: {
  		// 点击通告栏
  		click(index) {
  			this.$emit('click', index);
  		},
  		// 点击关闭按钮
  		close() {
  			this.$emit('close');
  		},
  		// 点击更多箭头按钮
  		getMore() {
  			this.$emit('getMore');
  		},
  		change(e) {
  			let index = e.detail.current;
  			if(index == this.list.length - 1) {
  				this.$emit('end');
c7add6cf   “wangming”   初始版本开发完毕
185
186
  			}
  		}
25852764   unknown   s
187
188
  	}
  };
c7add6cf   “wangming”   初始版本开发完毕
189
190
191
  </script>
  
  <style lang="scss" scoped>
25852764   unknown   s
192
  @import "../../libs/css/style.components.scss";
c7add6cf   “wangming”   初始版本开发完毕
193
  
25852764   unknown   s
194
195
196
197
198
199
200
201
202
  .u-notice-bar {
  	width: 100%;
  	@include vue-flex;
  	align-items: center;
  	justify-content: center;
  	flex-wrap: nowrap;
  	padding: 18rpx 24rpx;
  	overflow: hidden;
  }
c7add6cf   “wangming”   初始版本开发完毕
203
  
25852764   unknown   s
204
205
206
207
208
209
210
211
  .u-swiper {
  	font-size: 26rpx;
  	height: 32rpx;
  	@include vue-flex;
  	align-items: center;
  	flex: 1;
  	margin-left: 12rpx;
  }
c7add6cf   “wangming”   初始版本开发完毕
212
  
25852764   unknown   s
213
214
215
216
217
  .u-swiper-item {
  	@include vue-flex;
  	align-items: center;
  	overflow: hidden;
  }
c7add6cf   “wangming”   初始版本开发完毕
218
  
25852764   unknown   s
219
220
221
  .u-news-item {
  	overflow: hidden;
  }
c7add6cf   “wangming”   初始版本开发完毕
222
  
25852764   unknown   s
223
224
225
226
227
228
229
  .u-right-icon {
  	margin-left: 12rpx;
  	/* #ifndef APP-NVUE */
  	display: inline-flex;		
  	/* #endif */
  	align-items: center;
  }
c7add6cf   “wangming”   初始版本开发完毕
230
  
25852764   unknown   s
231
232
233
234
235
236
  .u-left-icon {
  	/* #ifndef APP-NVUE */
  	display: inline-flex;		
  	/* #endif */
  	align-items: center;
  }
c7add6cf   “wangming”   初始版本开发完毕
237
  </style>