mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	初始化管理后台的 uniapp 版本
This commit is contained in:
		| @@ -0,0 +1,179 @@ | ||||
| <template> | ||||
| 	<view class="uni-table-checkbox" @click="selected"> | ||||
| 		<view v-if="!indeterminate" class="checkbox__inner" :class="{'is-checked':isChecked,'is-disable':isDisabled}"> | ||||
| 			<view class="checkbox__inner-icon"></view> | ||||
| 		</view> | ||||
| 		<view v-else class="checkbox__inner checkbox--indeterminate"> | ||||
| 			<view class="checkbox__inner-icon"></view> | ||||
| 		</view> | ||||
| 	</view> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| 	export default { | ||||
| 		name: 'TableCheckbox', | ||||
| 		emits:['checkboxSelected'], | ||||
| 		props: { | ||||
| 			indeterminate: { | ||||
| 				type: Boolean, | ||||
| 				default: false | ||||
| 			}, | ||||
| 			checked: { | ||||
| 				type: [Boolean,String], | ||||
| 				default: false | ||||
| 			}, | ||||
| 			disabled: { | ||||
| 				type: Boolean, | ||||
| 				default: false | ||||
| 			}, | ||||
| 			index: { | ||||
| 				type: Number, | ||||
| 				default: -1 | ||||
| 			}, | ||||
| 			cellData: { | ||||
| 				type: Object, | ||||
| 				default () { | ||||
| 					return {} | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		watch:{ | ||||
| 			checked(newVal){ | ||||
| 				if(typeof this.checked === 'boolean'){ | ||||
| 					this.isChecked = newVal | ||||
| 				}else{ | ||||
| 					this.isChecked = true | ||||
| 				} | ||||
| 			}, | ||||
| 			indeterminate(newVal){ | ||||
| 				this.isIndeterminate = newVal | ||||
| 			} | ||||
| 		}, | ||||
| 		data() { | ||||
| 			return { | ||||
| 				isChecked: false, | ||||
| 				isDisabled: false, | ||||
| 				isIndeterminate:false | ||||
| 			} | ||||
| 		}, | ||||
| 		created() { | ||||
| 			if(typeof this.checked === 'boolean'){ | ||||
| 				this.isChecked = this.checked | ||||
| 			} | ||||
| 			this.isDisabled = this.disabled | ||||
| 		}, | ||||
| 		methods: { | ||||
| 			selected() { | ||||
| 				if (this.isDisabled) return | ||||
| 				this.isIndeterminate = false | ||||
| 				this.isChecked = !this.isChecked | ||||
| 				this.$emit('checkboxSelected', { | ||||
| 					checked: this.isChecked, | ||||
| 					data: this.cellData | ||||
| 				}) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| </script> | ||||
|  | ||||
| <style lang="scss"> | ||||
| 	$checked-color: #007aff; | ||||
| 	$border-color: #DCDFE6; | ||||
| 	$disable:0.4; | ||||
|  | ||||
| 	.uni-table-checkbox { | ||||
| 		display: flex; | ||||
| 		flex-direction: row; | ||||
| 		align-items: center; | ||||
| 		justify-content: center; | ||||
| 		position: relative; | ||||
| 		margin: 5px 0; | ||||
| 		cursor: pointer; | ||||
|  | ||||
| 		// 多选样式 | ||||
| 		.checkbox__inner { | ||||
| 			/* #ifndef APP-NVUE */ | ||||
| 			flex-shrink: 0; | ||||
| 			box-sizing: border-box; | ||||
| 			/* #endif */ | ||||
| 			position: relative; | ||||
| 			width: 16px; | ||||
| 			height: 16px; | ||||
| 			border: 1px solid $border-color; | ||||
| 			border-radius: 2px; | ||||
| 			background-color: #fff; | ||||
| 			z-index: 1; | ||||
|  | ||||
| 			.checkbox__inner-icon { | ||||
| 				position: absolute; | ||||
| 				/* #ifdef APP-NVUE */ | ||||
| 				top: 2px; | ||||
| 				/* #endif */ | ||||
| 				/* #ifndef APP-NVUE */ | ||||
| 				top: 2px; | ||||
| 				/* #endif */ | ||||
| 				left: 5px; | ||||
| 				height: 7px; | ||||
| 				width: 3px; | ||||
| 				border: 1px solid #fff; | ||||
| 				border-left: 0; | ||||
| 				border-top: 0; | ||||
| 				opacity: 0; | ||||
| 				transform-origin: center; | ||||
| 				transform: rotate(45deg); | ||||
| 				box-sizing: content-box; | ||||
| 			} | ||||
|  | ||||
| 			&.checkbox--indeterminate { | ||||
| 				border-color: $checked-color; | ||||
| 				background-color: $checked-color; | ||||
|  | ||||
| 				.checkbox__inner-icon { | ||||
| 					position: absolute; | ||||
| 					opacity: 1; | ||||
| 					transform: rotate(0deg); | ||||
| 					height: 2px; | ||||
| 					top: 0; | ||||
| 					bottom: 0; | ||||
| 					margin: auto; | ||||
| 					left: 0px; | ||||
| 					right: 0px; | ||||
| 					bottom: 0; | ||||
| 					width: auto; | ||||
| 					border: none; | ||||
| 					border-radius: 2px; | ||||
| 					transform: scale(0.5); | ||||
| 					background-color: #fff; | ||||
| 				} | ||||
| 			} | ||||
| 			&:hover{ | ||||
| 				border-color: $checked-color; | ||||
| 			} | ||||
| 			// 禁用 | ||||
| 			&.is-disable { | ||||
| 				/* #ifdef H5 */ | ||||
| 				cursor: not-allowed; | ||||
| 				/* #endif */ | ||||
| 				background-color: #F2F6FC; | ||||
| 				border-color: $border-color; | ||||
| 			} | ||||
|  | ||||
| 			// 选中 | ||||
| 			&.is-checked { | ||||
| 				border-color: $checked-color; | ||||
| 				background-color: $checked-color; | ||||
|  | ||||
| 				.checkbox__inner-icon { | ||||
| 					opacity: 1; | ||||
| 					transform: rotate(45deg); | ||||
| 				} | ||||
|  | ||||
| 				// 选中禁用 | ||||
| 				&.is-disable { | ||||
| 					opacity: $disable; | ||||
| 				} | ||||
| 			} | ||||
| 			 | ||||
| 		} | ||||
| 	} | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV