| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | 
							- <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"
 
-         @change="noticeChange"
 
-     >
 
-       <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('noticebar组件direction为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 {
 
-       index: 0
 
-     }
 
-   },
 
-   methods: {
 
-     noticeChange(e) {
 
-       this.index = e.detail.current
 
-     },
 
-     // 点击通告栏
 
-     clickHandler() {
 
-       this.$emit('click', this.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>
 
 
  |