mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
| 	<view class="uni-breadcrumb-item">
 | |
| 		<view :class="{
 | |
| 			'uni-breadcrumb-item--slot': true,
 | |
| 			'uni-breadcrumb-item--slot-link': to && currentPage !== to
 | |
| 			}" @click="navTo">
 | |
| 			<slot />
 | |
| 		</view>
 | |
| 		<i v-if="separatorClass" class="uni-breadcrumb-item--separator" :class="separatorClass" />
 | |
| 		<text v-else class="uni-breadcrumb-item--separator">{{ separator }}</text>
 | |
| 	</view>
 | |
| </template>
 | |
| <script>
 | |
| 	/**
 | |
| 	 * BreadcrumbItem 面包屑导航子组件
 | |
| 	 * @property {String/Object} to 路由跳转页面路径/对象
 | |
| 	 * @property {Boolean} replace 在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持)
 | |
| 	 */
 | |
| 	export default {
 | |
| 		data() {
 | |
| 			return {
 | |
| 				currentPage: ""
 | |
| 			}
 | |
| 		},
 | |
| 		options: {
 | |
| 			virtualHost: true
 | |
| 		},
 | |
| 		props: {
 | |
| 			to: {
 | |
| 				type: String,
 | |
| 				default: ''
 | |
| 			},
 | |
| 			replace:{
 | |
| 				type: Boolean,
 | |
| 				default: false
 | |
| 			}
 | |
| 		},
 | |
| 		inject: {
 | |
| 			uniBreadcrumb: {
 | |
| 				from: "uniBreadcrumb",
 | |
| 				default: null
 | |
| 			}
 | |
| 		},
 | |
| 		created(){
 | |
| 			const pages = getCurrentPages()
 | |
| 			const page = pages[pages.length-1]
 | |
| 
 | |
| 			if(page){
 | |
| 				this.currentPage = `/${page.route}`
 | |
| 			}
 | |
| 		},
 | |
| 		computed: {
 | |
| 			separator() {
 | |
| 				return this.uniBreadcrumb.separator
 | |
| 			},
 | |
| 			separatorClass() {
 | |
| 				return this.uniBreadcrumb.separatorClass
 | |
| 			}
 | |
| 		},
 | |
| 		methods: {
 | |
| 			navTo() {
 | |
| 				const { to } = this
 | |
| 
 | |
| 				if (!to || this.currentPage === to){
 | |
| 					return
 | |
| 				}
 | |
| 
 | |
| 				if(this.replace){
 | |
| 					uni.redirectTo({
 | |
| 						url:to
 | |
| 					})
 | |
| 				}else{
 | |
| 					uni.navigateTo({
 | |
| 						url:to
 | |
| 					})
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| </script>
 | |
| <style lang="scss">
 | |
| 	$uni-primary: #2979ff !default;
 | |
| 	$uni-base-color: #6a6a6a !default;
 | |
| 	$uni-main-color: #3a3a3a !default;
 | |
| 	.uni-breadcrumb-item {
 | |
| 		display: flex;
 | |
| 		align-items: center;
 | |
| 		white-space: nowrap;
 | |
| 		font-size: 14px;
 | |
| 
 | |
| 		&--slot {
 | |
| 			color: $uni-base-color;
 | |
| 			padding: 0 10px;
 | |
| 
 | |
| 			&-link {
 | |
| 				color: $uni-main-color;
 | |
| 				font-weight: bold;
 | |
| 				/* #ifndef APP-NVUE */
 | |
| 				cursor: pointer;
 | |
| 				/* #endif */
 | |
| 
 | |
| 				&:hover {
 | |
| 					color: $uni-primary;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		&--separator {
 | |
| 			font-size: 12px;
 | |
| 			color: $uni-base-color;
 | |
| 		}
 | |
| 
 | |
| 		&:first-child &--slot {
 | |
| 			padding-left: 0;
 | |
| 		}
 | |
| 		
 | |
| 		&:last-child &--separator {
 | |
| 			display: none;
 | |
| 		}
 | |
| 	}
 | |
| </style>
 | 
