You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							140 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							140 lines
						
					
					
						
							2.7 KiB
						
					
					
				
								<template>
							 | 
						|
									<view
							 | 
						|
										:style="'width:' + width + ';' + (square ? 'height:' + width : '')"
							 | 
						|
										class="uni-grid-item grid-item"
							 | 
						|
									>
							 | 
						|
										<view
							 | 
						|
											:class="{
							 | 
						|
												'uni-grid-item--border': showBorder,
							 | 
						|
												'uni-grid-item--border-top': showBorder && index < column,
							 | 
						|
												'uni-highlight': highlight
							 | 
						|
											}"
							 | 
						|
											:style="{
							 | 
						|
												'border-right-color': borderColor,
							 | 
						|
												'border-bottom-color': borderColor,
							 | 
						|
												'border-top-color': borderColor
							 | 
						|
											}"
							 | 
						|
											class="uni-grid-item__box"
							 | 
						|
											@click="_onClick"
							 | 
						|
										>
							 | 
						|
											<slot />
							 | 
						|
										</view>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
								/**
							 | 
						|
								 * GridItem 宫格
							 | 
						|
								 * @description 宫格组件
							 | 
						|
								 * @tutorial https://ext.dcloud.net.cn/plugin?id=27
							 | 
						|
								 * @property {Number} index 子组件的唯一标识 ,点击gird会返回当前的标识
							 | 
						|
								 */
							 | 
						|
								export default {
							 | 
						|
									name: 'UniGridItem',
							 | 
						|
									inject: ['grid'],
							 | 
						|
									props: {
							 | 
						|
										index: {
							 | 
						|
											type: Number,
							 | 
						|
											default: 0
							 | 
						|
										}
							 | 
						|
									},
							 | 
						|
									data() {
							 | 
						|
										return {
							 | 
						|
											column: 0,
							 | 
						|
											showBorder: true,
							 | 
						|
											square: true,
							 | 
						|
											highlight: true,
							 | 
						|
											left: 0,
							 | 
						|
											top: 0,
							 | 
						|
											openNum: 2,
							 | 
						|
											width: 0,
							 | 
						|
											borderColor: '#e5e5e5'
							 | 
						|
										};
							 | 
						|
									},
							 | 
						|
									created() {
							 | 
						|
										this.column = this.grid.column;
							 | 
						|
										this.showBorder = this.grid.showBorder;
							 | 
						|
										this.square = this.grid.square;
							 | 
						|
										this.highlight = this.grid.highlight;
							 | 
						|
										this.top = this.hor === 0 ? this.grid.hor : this.hor;
							 | 
						|
										this.left = this.ver === 0 ? this.grid.ver : this.ver;
							 | 
						|
										this.borderColor = this.grid.borderColor;
							 | 
						|
										this.grid.children.push(this);
							 | 
						|
										// this.grid.init()
							 | 
						|
										this.width = this.grid.width;
							 | 
						|
									},
							 | 
						|
									beforeDestroy() {
							 | 
						|
										this.grid.children.forEach((item, index) => {
							 | 
						|
											if (item === this) {
							 | 
						|
												this.grid.children.splice(index, 1);
							 | 
						|
											}
							 | 
						|
										});
							 | 
						|
									},
							 | 
						|
									methods: {
							 | 
						|
										_onClick() {
							 | 
						|
											this.grid.change({
							 | 
						|
												detail: {
							 | 
						|
													index: this.index
							 | 
						|
												}
							 | 
						|
											});
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								};
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
								.uni-grid-item {
							 | 
						|
									/* #ifndef APP-NVUE */
							 | 
						|
									height: 100%;
							 | 
						|
									display: flex;
							 | 
						|
									/* #endif */
							 | 
						|
									/* #ifdef H5 */
							 | 
						|
									cursor: pointer;
							 | 
						|
									/* #endif */
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								.uni-grid-item__box {
							 | 
						|
									/* #ifndef APP-NVUE */
							 | 
						|
									display: flex;
							 | 
						|
									width: 100%;
							 | 
						|
									/* #endif */
							 | 
						|
									position: relative;
							 | 
						|
									flex: 1;
							 | 
						|
									flex-direction: column;
							 | 
						|
									// justify-content: center;
							 | 
						|
									// align-items: center;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								.uni-grid-item--border {
							 | 
						|
									position: relative;
							 | 
						|
									/* #ifdef APP-NVUE */
							 | 
						|
									border-bottom-color: #d2d2d2;
							 | 
						|
									border-bottom-style: solid;
							 | 
						|
									border-bottom-width: 0.5px;
							 | 
						|
									border-right-color: #d2d2d2;
							 | 
						|
									border-right-style: solid;
							 | 
						|
									border-right-width: 0.5px;
							 | 
						|
									/* #endif */
							 | 
						|
									/* #ifndef APP-NVUE */
							 | 
						|
									z-index: 0;
							 | 
						|
									border-bottom: 1px #d2d2d2 solid;
							 | 
						|
									border-right: 1px #d2d2d2 solid;
							 | 
						|
									/* #endif */
							 | 
						|
								}
							 | 
						|
								.uni-grid-item--border-top {
							 | 
						|
									position: relative;
							 | 
						|
									/* #ifdef APP-NVUE */
							 | 
						|
									border-top-color: #d2d2d2;
							 | 
						|
									border-top-style: solid;
							 | 
						|
									border-top-width: 0.5px;
							 | 
						|
									/* #endif */
							 | 
						|
									/* #ifndef APP-NVUE */
							 | 
						|
									border-top: 1px #d2d2d2 solid;
							 | 
						|
									z-index: 0;
							 | 
						|
									/* #endif */
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								.uni-highlight:active {
							 | 
						|
									background-color: #f1f1f1;
							 | 
						|
								}
							 | 
						|
								</style>
							 |