Blame view

uni_modules/uview-plus/components/u-td/u-td.vue 2.07 KB
a2702f6d   刘淇   巡查计划
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  <template>
  	<view class="u-td" :style="[tdStyle]">
  		<slot></slot>
  	</view>
  </template>
  
  <script>
  	import { props } from './props';
  	import { mpMixin } from '../../libs/mixin/mpMixin';
  	import { mixin } from '../../libs/mixin/mixin';
  	import { addUnit, $parent } from '../../libs/function/index';
  	/** 
  	 * Td 表格中的单元格
  	 * @description 
  	 * @tutorial url
  	 * @property {String | Number} 
  	 * @event {Function}
  	 * @example
  	 */
  	export default {
  		name: 'u-td',
  		mixins: [mpMixin, mixin, props],
  		props: {
  			// 宽度,百分比或者具体带单位的值,如30%, 200rpx等,一般使用百分比
  			width: {
  				type: [String],
  				default: 'auto'
  			},
  			textAlign: {
  				type: String,
  				default: ''
  			},
  			fontSize: {
  				type: String,
  				default: ''
  			},
  			borderColor: {
  				type: String,
  				default: ''
  			},
  			color: {
  				type: String,
  				default: ''
  			}
  		},
  		data() {
  			return {
  				tdStyle: {
  					
  				}
  			}
  		},
  		created() {
  			this.parent = false;
  		},
  		mounted() {
  			this.parent = $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 = addUnit(this.parent.fontSize);
  				style.padding = this.parent.padding;
  				style.borderBottom = `solid 1px ${this.parent.borderColor}`;
  				style.borderRight = `solid 1px ${this.parent.borderColor}`;
  				style.color = this.parent.color;
  				if (this.textAlign != '') {
  					style.textAlign = this.textAlign;
  				}
  				if (this.fontSize != '') {
  					style.fontSize = this.fontSize;
  				}
  				if (this.borderColor != '') {
  					style.borderColor = this.borderColor;
  				}
  				if (this.color != '') {
  					style.color = this.color;
  				}
  				this.tdStyle = style;
  			}
  		}
  	}
  </script>
  
  <style lang="scss" scoped>
  	.u-td {
  		@include flex;
  		flex-direction: column;
  		flex: 1;
  		justify-content: center;
  		font-size: 14px;
  		color: $u-content-color;
  		align-self: stretch;
  		box-sizing: border-box;
  		height: 100%;
  	}
  </style>