| <template> | 
|     <view class="uni-section"> | 
|         <view class="uni-section-header" @click="onClick"> | 
|                 <view class="uni-section-header__decoration" v-if="type" :class="type" /> | 
|         <slot v-else name="decoration"></slot> | 
|   | 
|         <view class="uni-section-header__content"> | 
|           <text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title" :class="{'distraction':!subTitle}">{{ title }}</text> | 
|           <text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}" class="uni-section-header__content-sub">{{ subTitle }}</text> | 
|         </view> | 
|   | 
|         <view class="uni-section-header__slot-right"> | 
|           <slot name="right"></slot> | 
|         </view> | 
|         </view> | 
|   | 
|         <view class="uni-section-content" :style="{padding: _padding}"> | 
|             <slot /> | 
|         </view> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|   | 
|     /** | 
|      * Section 标题栏 | 
|      * @description 标题栏 | 
|      * @property {String} type = [line|circle|square] 标题装饰类型 | 
|      *     @value line 竖线 | 
|      *     @value circle 圆形 | 
|      *     @value square 正方形 | 
|      * @property {String} title 主标题 | 
|      * @property {String} titleFontSize 主标题字体大小 | 
|      * @property {String} titleColor 主标题字体颜色 | 
|      * @property {String} subTitle 副标题 | 
|      * @property {String} subTitleFontSize 副标题字体大小 | 
|      * @property {String} subTitleColor 副标题字体颜色 | 
|      * @property {String} padding 默认插槽 padding | 
|      */ | 
|   | 
|     export default { | 
|         name: 'UniSection', | 
|     emits:['click'], | 
|         props: { | 
|             type: { | 
|                 type: String, | 
|                 default: '' | 
|             }, | 
|             title: { | 
|                 type: String, | 
|                 required: true, | 
|                 default: '' | 
|             }, | 
|       titleFontSize: { | 
|         type: String, | 
|         default: '14px' | 
|       }, | 
|             titleColor:{ | 
|                 type: String, | 
|                 default: '#333' | 
|             }, | 
|             subTitle: { | 
|                 type: String, | 
|                 default: '' | 
|             }, | 
|       subTitleFontSize: { | 
|         type: String, | 
|         default: '12px' | 
|       }, | 
|       subTitleColor: { | 
|         type: String, | 
|         default: '#999' | 
|       }, | 
|             padding: { | 
|                 type: [Boolean, String], | 
|                 default: false | 
|             } | 
|         }, | 
|     computed:{ | 
|       _padding(){ | 
|         if(typeof this.padding === 'string'){ | 
|           return this.padding | 
|         } | 
|   | 
|         return this.padding?'10px':'' | 
|       } | 
|     }, | 
|         watch: { | 
|             title(newVal) { | 
|                 if (uni.report && newVal !== '') { | 
|                     uni.report('title', newVal) | 
|                 } | 
|             } | 
|         }, | 
|     methods: { | 
|             onClick() { | 
|                 this.$emit('click') | 
|             } | 
|         } | 
|     } | 
| </script> | 
| <style lang="scss" > | 
|     $uni-primary: #2979ff !default; | 
|   | 
|     .uni-section { | 
|         background-color: #fff; | 
|     .uni-section-header { | 
|       position: relative; | 
|       /* #ifndef APP-NVUE */ | 
|       display: flex; | 
|       /* #endif */ | 
|       flex-direction: row; | 
|       align-items: center; | 
|       padding: 12px 10px; | 
|       font-weight: normal; | 
|   | 
|       &__decoration{ | 
|         margin-right: 6px; | 
|         background-color: $uni-primary; | 
|         &.line { | 
|           width: 4px; | 
|           height: 12px; | 
|           border-radius: 10px; | 
|         } | 
|   | 
|         &.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; | 
|         } | 
|   | 
|         &.square { | 
|           width: 8px; | 
|           height: 8px; | 
|         } | 
|       } | 
|   | 
|       &__content { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: column; | 
|         flex: 1; | 
|         color: #333; | 
|   | 
|         .distraction { | 
|           flex-direction: row; | 
|           align-items: center; | 
|         } | 
|         &-sub { | 
|           margin-top: 2px; | 
|         } | 
|       } | 
|   | 
|       &__slot-right{ | 
|         font-size: 14px; | 
|       } | 
|     } | 
|   | 
|     .uni-section-content{ | 
|       font-size: 14px; | 
|     } | 
|     } | 
| </style> |