12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <template>
- <u-row class="di-descriptions-item" align="top">
- <u-col :span="labelCol || parentCol.labelCol || 3" class="di-descriptions-item__label">
- <slot name="label">
- {{label ? label + ':' : ''}}
- </slot>
- </u-col>
- <u-col :span="valueCol || parentCol.valueCol || 9" class="di-descriptions-item__value">
- <slot name="value">
- <view :class="{'di-descriptions-item__ellipsis': ellipsis}">
- {{value || ''}}
- </view>
- </slot>
- </u-col>
- </u-row>
- </template>
- <script>
- /**
- * di-descriptions-item 描述列表项
- * @description 描述列表项,用于展示label value的值,比如对象详情页面等。 搭配父组件di-descriptions
- * @property {String slot} label label
- * @property {String Number slot} value value
- * @property {Boolean} ellipsis value过长是否显示省略(默认false)
- * @property {Number String} label-col label宽度,等分12份,可以继承di-descriptions#label-col,默认值3
- * @property {Number String} value-col value宽度,等分12份,可以继承di-descriptions#value-col,默认值9
- */
- export default {
- computed: {
- parentCol() {
- if(this.descriptions && this.descriptions.$options && this.descriptions.$options.propsData) {
- let {labelCol, valueCol} = this.descriptions.$options.propsData
- return {labelCol, valueCol}
- }
- return {}
- },
- descriptions() {
- let parent = this.$parent;
- let parentName = parent.$options._componentTag;
- while (parentName !== 'di-descriptions') {
- if(!(parent = parent.$parent)) {
- break
- }
- parentName = parent.$options._componentTag;
- }
- return parent;
- }
- },
- props: {
- label: {
- type: String,
- require: true
- },
- value: {
- type: [String, Number],
- require: true
- },
- ellipsis: {
- type: Boolean,
- default: false
- },
- labelCol: {
- type: [String, Number]
- },
- valueCol: {
- type: [String, Number]
- }
- }
- }
- </script>
- <style lang="scss">
- .di-descriptions-item {
- color: $u-content-color;
- margin-bottom: 10rpx;
- &__label {
- color: #a3a3a3;;
- }
- &__ellipsis {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- }
- </style>
|