<template> 
 | 
    <view 
 | 
        class="u-notice-bar" 
 | 
        v-if="show" 
 | 
        :style="[{ 
 | 
            backgroundColor: bgColor 
 | 
        }, $u.addStyle(customStyle)]" 
 | 
    > 
 | 
        <template v-if="direction === 'column' || (direction === 'row' && step)"> 
 | 
            <u-column-notice 
 | 
                :color="color" 
 | 
                :bgColor="bgColor" 
 | 
                :text="text" 
 | 
                :mode="mode" 
 | 
                :step="step" 
 | 
                :icon="icon" 
 | 
                :disable-touch="disableTouch" 
 | 
                :fontSize="fontSize" 
 | 
                :duration="duration" 
 | 
                @close="close" 
 | 
                @click="click" 
 | 
            ></u-column-notice> 
 | 
        </template> 
 | 
        <template v-else> 
 | 
            <u-row-notice 
 | 
                :color="color" 
 | 
                :bgColor="bgColor" 
 | 
                :text="text" 
 | 
                :mode="mode" 
 | 
                :fontSize="fontSize" 
 | 
                :speed="speed" 
 | 
                :url="url" 
 | 
                :linkType="linkType" 
 | 
                :icon="icon" 
 | 
                @close="close" 
 | 
                @click="click" 
 | 
            ></u-row-notice> 
 | 
        </template> 
 | 
    </view> 
 | 
</template> 
 | 
<script> 
 | 
    import props from './props.js'; 
 | 
  
 | 
    /** 
 | 
     * noticeBar 滚动通知 
 | 
     * @description 该组件用于滚动通告场景,有多种模式可供选择 
 | 
     * @tutorial https://www.uviewui.com/components/noticeBar.html 
 | 
     * @property {Array | String}    text            显示的内容,数组 
 | 
     * @property {String}            direction        通告滚动模式,row-横向滚动,column-竖向滚动 ( 默认 'row' ) 
 | 
     * @property {Boolean}            step            direction = row时,是否使用步进形式滚动  ( 默认 false ) 
 | 
     * @property {String}            icon            是否显示左侧的音量图标 ( 默认 'volume' ) 
 | 
     * @property {String}            mode            通告模式,link-显示右箭头,closable-显示右侧关闭图标 
 | 
     * @property {String}            color            文字颜色,各图标也会使用文字颜色 ( 默认 '#f9ae3d' ) 
 | 
     * @property {String}            bgColor            背景颜色 ( 默认 '#fdf6ec' ) 
 | 
     * @property {String | Number}    speed            水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 ( 默认 80 ) 
 | 
     * @property {String | Number}    fontSize        字体大小 ( 默认 14 ) 
 | 
     * @property {String | Number}    duration        滚动一个周期的时间长,单位ms ( 默认 2000 ) 
 | 
     * @property {Boolean}            disableTouch    是否禁止用手滑动切换 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序(默认34) ( 默认 true ) 
 | 
     * @property {String}            url                跳转的页面路径 
 | 
     * @property {String}            linkType        页面跳转的类型 ( 默认 navigateTo ) 
 | 
     * @property {Object}            customStyle        定义需要用到的外部样式 
 | 
     *  
 | 
     * @event {Function}            click            点击通告文字触发 
 | 
     * @event {Function}            close            点击右侧关闭图标触发 
 | 
     * @example <u-notice-bar :more-icon="true" :list="list"></u-notice-bar> 
 | 
     */ 
 | 
    export default { 
 | 
        name: "u-notice-bar", 
 | 
        mixins: [uni.$u.mpMixin, uni.$u.mixin,props], 
 | 
        data() { 
 | 
            return { 
 | 
                show: true 
 | 
            } 
 | 
        }, 
 | 
        methods: { 
 | 
            // 点击通告栏 
 | 
            click(index) { 
 | 
                this.$emit('click', index) 
 | 
                if (this.url && this.linkType) { 
 | 
                    // 此方法写在mixin中,另外跳转的url和linkType参数也在mixin的props中 
 | 
                    this.openPage() 
 | 
                } 
 | 
            }, 
 | 
            // 点击关闭按钮 
 | 
            close() { 
 | 
                this.show = false 
 | 
                this.$emit('close') 
 | 
            } 
 | 
        } 
 | 
    }; 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
    @import "../../libs/css/components.scss"; 
 | 
  
 | 
    .u-notice-bar { 
 | 
        overflow: hidden; 
 | 
        padding: 9px 12px; 
 | 
        flex: 1; 
 | 
    } 
 | 
</style> 
 |