mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 10:18:42 +08:00 
			
		
		
		
	初始化管理后台的 uniapp 版本
This commit is contained in:
		| @@ -0,0 +1,145 @@ | ||||
| <template> | ||||
| 	<view :class="[styleType === 'text'?'segmented-control--text' : 'segmented-control--button' ]" | ||||
| 		:style="{ borderColor: styleType === 'text' ? '' : activeColor }" class="segmented-control"> | ||||
| 		<view v-for="(item, index) in values" :class="[ styleType === 'text' ? '': 'segmented-control__item--button', | ||||
| 		index === currentIndex&&styleType === 'button' ? 'segmented-control__item--button--active': '', | ||||
| 		index === 0&&styleType === 'button' ? 'segmented-control__item--button--first': '', | ||||
| 			index === values.length - 1&&styleType === 'button' ? 'segmented-control__item--button--last': '' ]" :key="index" | ||||
| 			:style="{ backgroundColor: index === currentIndex && styleType === 'button' ? activeColor : '',borderColor: index === currentIndex&&styleType === 'text'||styleType === 'button'?activeColor:'transparent' }" | ||||
| 			class="segmented-control__item" @click="_onClick(index)"> | ||||
| 			<view> | ||||
| 				<text :style="{color: | ||||
| 				    index === currentIndex | ||||
| 				      ? styleType === 'text' | ||||
| 				        ? activeColor | ||||
| 				        : '#fff' | ||||
| 				      : styleType === 'text' | ||||
| 				        ? '#000' | ||||
| 				        : activeColor}" class="segmented-control__text" :class="styleType === 'text' && index === currentIndex ? 'segmented-control__item--text': ''">{{ item }}</text> | ||||
| 			</view> | ||||
|  | ||||
| 		</view> | ||||
| 	</view> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| 	/** | ||||
| 	 * SegmentedControl 分段器 | ||||
| 	 * @description 用作不同视图的显示 | ||||
| 	 * @tutorial https://ext.dcloud.net.cn/plugin?id=54 | ||||
| 	 * @property {Number} current 当前选中的tab索引值,从0计数 | ||||
| 	 * @property {String} styleType = [button|text] 分段器样式类型 | ||||
| 	 * 	@value button 按钮类型 | ||||
| 	 * 	@value text 文字类型 | ||||
| 	 * @property {String} activeColor 选中的标签背景色与边框颜色 | ||||
| 	 * @property {Array} values 选项数组 | ||||
| 	 * @event {Function} clickItem 组件触发点击事件时触发,e={currentIndex} | ||||
| 	 */ | ||||
|  | ||||
| 	export default { | ||||
| 		name: 'UniSegmentedControl', | ||||
| 		emits: ['clickItem'], | ||||
| 		props: { | ||||
| 			current: { | ||||
| 				type: Number, | ||||
| 				default: 0 | ||||
| 			}, | ||||
| 			values: { | ||||
| 				type: Array, | ||||
| 				default () { | ||||
| 					return [] | ||||
| 				} | ||||
| 			}, | ||||
| 			activeColor: { | ||||
| 				type: String, | ||||
| 				default: '#2979FF' | ||||
| 			}, | ||||
| 			styleType: { | ||||
| 				type: String, | ||||
| 				default: 'button' | ||||
| 			} | ||||
| 		}, | ||||
| 		data() { | ||||
| 			return { | ||||
| 				currentIndex: 0 | ||||
| 			} | ||||
| 		}, | ||||
| 		watch: { | ||||
| 			current(val) { | ||||
| 				if (val !== this.currentIndex) { | ||||
| 					this.currentIndex = val | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		created() { | ||||
| 			this.currentIndex = this.current | ||||
| 		}, | ||||
| 		methods: { | ||||
| 			_onClick(index) { | ||||
| 				if (this.currentIndex !== index) { | ||||
| 					this.currentIndex = index | ||||
| 					this.$emit('clickItem', { | ||||
| 						currentIndex: index | ||||
| 					}) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" > | ||||
| 	.segmented-control { | ||||
| 		/* #ifndef APP-NVUE */ | ||||
| 		display: flex; | ||||
| 		box-sizing: border-box; | ||||
| 		/* #endif */ | ||||
| 		flex-direction: row; | ||||
| 		height: 36px; | ||||
| 		overflow: hidden; | ||||
| 		/* #ifdef H5 */ | ||||
| 		cursor: pointer; | ||||
| 		/* #endif */ | ||||
| 	} | ||||
|  | ||||
| 	.segmented-control__item { | ||||
| 		/* #ifndef APP-NVUE */ | ||||
| 		display: inline-flex; | ||||
| 		box-sizing: border-box; | ||||
| 		/* #endif */ | ||||
| 		position: relative; | ||||
| 		flex: 1; | ||||
| 		justify-content: center; | ||||
| 		align-items: center; | ||||
| 	} | ||||
|  | ||||
| 	.segmented-control__item--button { | ||||
| 		border-style: solid; | ||||
| 		border-top-width: 1px; | ||||
| 		border-bottom-width: 1px; | ||||
| 		border-right-width: 1px; | ||||
| 		border-left-width: 0; | ||||
| 	} | ||||
|  | ||||
| 	.segmented-control__item--button--first { | ||||
| 		border-left-width: 1px; | ||||
| 		border-top-left-radius: 5px; | ||||
| 		border-bottom-left-radius: 5px; | ||||
| 	} | ||||
|  | ||||
| 	.segmented-control__item--button--last { | ||||
| 		border-top-right-radius: 5px; | ||||
| 		border-bottom-right-radius: 5px; | ||||
| 	} | ||||
|  | ||||
| 	.segmented-control__item--text { | ||||
| 		border-bottom-style: solid; | ||||
| 		border-bottom-width: 2px; | ||||
| 		padding: 6px 0; | ||||
| 	} | ||||
|  | ||||
| 	.segmented-control__text { | ||||
| 		font-size: 14px; | ||||
| 		line-height: 20px; | ||||
| 		text-align: center; | ||||
| 	} | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV