mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 20:28:44 +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>
							 |