67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						||
	<view class="u-td" :style="[tdStyle]">
 | 
						||
		<slot></slot>
 | 
						||
	</view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
	/**
 | 
						||
	 * td td单元格
 | 
						||
	 * @description 表格组件一般用于展示大量结构化数据的场景(搭配u-table使用)
 | 
						||
	 * @tutorial https://www.uviewui.com/components/table.html#td-props
 | 
						||
	 * @property {String Number} width 单元格宽度百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比,单元格宽度默认为均分tr的长度(默认auto)
 | 
						||
	 * @example <u-td>二年级</u-td>
 | 
						||
	 */
 | 
						||
	export default {
 | 
						||
		name: "u-td",
 | 
						||
		props: {
 | 
						||
			// 宽度,百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比
 | 
						||
			width: {
 | 
						||
				type: [Number, String],
 | 
						||
				default: 'auto'
 | 
						||
			}
 | 
						||
		},
 | 
						||
		data() {
 | 
						||
			return {
 | 
						||
				tdStyle: {
 | 
						||
					
 | 
						||
				}
 | 
						||
			}
 | 
						||
		},
 | 
						||
		created() {
 | 
						||
			this.parent = false;
 | 
						||
		},
 | 
						||
		mounted() {
 | 
						||
			this.parent = this.$u.$parent.call(this, 'u-table');
 | 
						||
			if (this.parent) {
 | 
						||
				// 将父组件的相关参数,合并到本组件
 | 
						||
				let style = {};
 | 
						||
				if (this.width != "auto") style.flex = `0 0 ${this.width}`;
 | 
						||
				style.textAlign = this.parent.align;
 | 
						||
				style.fontSize = this.parent.fontSize + 'rpx';
 | 
						||
				style.padding = this.parent.padding;
 | 
						||
				style.borderBottom = `solid 1px ${this.parent.borderColor}`;
 | 
						||
				style.borderRight = `solid 1px ${this.parent.borderColor}`;
 | 
						||
				style.color = this.parent.color;
 | 
						||
				this.tdStyle = style;
 | 
						||
			}
 | 
						||
		}
 | 
						||
	};
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss" scoped>
 | 
						||
	@import "../../libs/css/style.components.scss";
 | 
						||
 | 
						||
	.u-td {
 | 
						||
		@include vue-flex;
 | 
						||
		flex-direction: column;
 | 
						||
		flex: 1;
 | 
						||
		justify-content: center;
 | 
						||
		font-size: 28rpx;
 | 
						||
		color: $u-content-color;
 | 
						||
		align-self: stretch;
 | 
						||
		box-sizing: border-box;
 | 
						||
		height: 100%;
 | 
						||
	}
 | 
						||
</style>
 |