| <template> | 
|     <view class="uni-steps"> | 
|         <view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']"> | 
|             <view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']"> | 
|                 <view v-for="(item,index) in options" :key="index" | 
|                     :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']"> | 
|                     <text :style="{color:index === active?activeColor:deactiveColor}" | 
|                         :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.title}}</text> | 
|                     <text :style="{color: deactiveColor}" | 
|                         :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.desc}}</text> | 
|                 </view> | 
|             </view> | 
|             <view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']"> | 
|                 <view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']" | 
|                     v-for="(item,index) in options" :key="index"> | 
|                     <view | 
|                         :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']" | 
|                         :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}"> | 
|                     </view> | 
|                     <view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']" | 
|                         v-if="index === active"> | 
|                         <uni-icons :color="activeColor" :type="activeIcon" size="14"></uni-icons> | 
|                     </view> | 
|                     <view v-else :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']" | 
|                         :style="{backgroundColor:index<active?activeColor:deactiveColor}"></view> | 
|                     <view | 
|                         :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']" | 
|                         :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}"> | 
|                     </view> | 
|                 </view> | 
|             </view> | 
|         </view> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     /** | 
|      * Steps 步骤条 | 
|      * @description 评分组件 | 
|      * @tutorial https://ext.dcloud.net.cn/plugin?id=34 | 
|      * @property {Number} active 当前步骤 | 
|      * @property {String} direction = [row|column] 当前步骤 | 
|      *     @value row 横向 | 
|      *     @value column 纵向 | 
|      * @property {String} activeColor 选中状态的颜色 | 
|      * @property {Array} options 数据源,格式为:[{title:'xxx',desc:'xxx'},{title:'xxx',desc:'xxx'}] | 
|      */ | 
|   | 
|     export default { | 
|         name: 'UniSteps', | 
|         props: { | 
|             direction: { | 
|                 // 排列方向 row column | 
|                 type: String, | 
|                 default: 'row' | 
|             }, | 
|             activeColor: { | 
|                 // 激活状态颜色 | 
|                 type: String, | 
|                 default: '#2979FF' | 
|             }, | 
|             deactiveColor: { | 
|                 // 未激活状态颜色 | 
|                 type: String, | 
|                 default: '#B7BDC6' | 
|             }, | 
|             active: { | 
|                 // 当前步骤 | 
|                 type: Number, | 
|                 default: 0 | 
|             }, | 
|             activeIcon: { | 
|                 // 当前步骤 | 
|                 type: String, | 
|                 default: 'checkbox-filled' | 
|             }, | 
|             options: { | 
|                 type: Array, | 
|                 default () { | 
|                     return [] | 
|                 } | 
|             } // 数据 | 
|         }, | 
|         data() { | 
|             return {} | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style lang="scss"> | 
|     $uni-primary: #2979ff !default; | 
|     $uni-border-color:#EDEDED; | 
|     .uni-steps { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         width: 100%; | 
|         /* #endif */ | 
|         /* #ifdef APP-NVUE */ | 
|         flex: 1; | 
|         /* #endif */ | 
|         flex-direction: column; | 
|     } | 
|   | 
|     .uni-steps__row { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: column; | 
|     } | 
|   | 
|     .uni-steps__column { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: row-reverse; | 
|     } | 
|   | 
|     .uni-steps__row-text-container { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: row; | 
|         align-items: flex-end; | 
|         margin-bottom: 8px; | 
|     } | 
|   | 
|     .uni-steps__column-text-container { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: column; | 
|         flex: 1; | 
|     } | 
|   | 
|     .uni-steps__row-text { | 
|         /* #ifndef APP-NVUE */ | 
|         display: inline-flex; | 
|         /* #endif */ | 
|         flex: 1; | 
|         flex-direction: column; | 
|     } | 
|   | 
|     .uni-steps__column-text { | 
|         padding: 6px 0px; | 
|         border-bottom-style: solid; | 
|         border-bottom-width: 1px; | 
|         border-bottom-color: $uni-border-color; | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: column; | 
|     } | 
|   | 
|     .uni-steps__row-title { | 
|         font-size: 14px; | 
|         line-height: 16px; | 
|         text-align: center; | 
|     } | 
|   | 
|     .uni-steps__column-title { | 
|         font-size: 14px; | 
|         text-align: left; | 
|         line-height: 18px; | 
|     } | 
|   | 
|     .uni-steps__row-desc { | 
|         font-size: 12px; | 
|         line-height: 14px; | 
|         text-align: center; | 
|     } | 
|   | 
|     .uni-steps__column-desc { | 
|         font-size: 12px; | 
|         text-align: left; | 
|         line-height: 18px; | 
|     } | 
|   | 
|     .uni-steps__row-container { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: row; | 
|     } | 
|   | 
|     .uni-steps__column-container { | 
|         /* #ifndef APP-NVUE */ | 
|         display: inline-flex; | 
|         /* #endif */ | 
|         width: 30px; | 
|         flex-direction: column; | 
|     } | 
|   | 
|     .uni-steps__row-line-item { | 
|         /* #ifndef APP-NVUE */ | 
|         display: inline-flex; | 
|         /* #endif */ | 
|         flex-direction: row; | 
|         flex: 1; | 
|         height: 14px; | 
|         line-height: 14px; | 
|         align-items: center; | 
|         justify-content: center; | 
|     } | 
|   | 
|     .uni-steps__column-line-item { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: column; | 
|         flex: 1; | 
|         align-items: center; | 
|         justify-content: center; | 
|     } | 
|   | 
|     .uni-steps__row-line { | 
|         flex: 1; | 
|         height: 1px; | 
|         background-color: #B7BDC6; | 
|     } | 
|   | 
|     .uni-steps__column-line { | 
|         width: 1px; | 
|         background-color: #B7BDC6; | 
|     } | 
|   | 
|     .uni-steps__row-line--after { | 
|         transform: translateX(1px); | 
|     } | 
|   | 
|     .uni-steps__column-line--after { | 
|         flex: 1; | 
|         transform: translate(0px, 1px); | 
|     } | 
|   | 
|     .uni-steps__row-line--before { | 
|         transform: translateX(-1px); | 
|     } | 
|   | 
|     .uni-steps__column-line--before { | 
|         height: 6px; | 
|         transform: translate(0px, -13px); | 
|     } | 
|   | 
|     .uni-steps__row-circle { | 
|         width: 5px; | 
|         height: 5px; | 
|         border-radius: 50%; | 
|         background-color: #B7BDC6; | 
|         margin: 0px 3px; | 
|     } | 
|   | 
|     .uni-steps__column-circle { | 
|         width: 5px; | 
|         height: 5px; | 
|         border-radius: 50%; | 
|         background-color: #B7BDC6; | 
|         margin: 4px 0px 5px 0px; | 
|     } | 
|   | 
|     .uni-steps__row-check { | 
|         margin: 0px 6px; | 
|     } | 
|   | 
|     .uni-steps__column-check { | 
|         height: 14px; | 
|         line-height: 14px; | 
|         margin: 2px 0px; | 
|     } | 
| </style> |