|
|
<template>
|
|
|
<!-- 标准表单行组件,根据不同的属性组合有不同的样式表现 -->
|
|
|
<div :class="[prefixCls, lastCls, blockCls, gridCls]">
|
|
|
<!-- 标题部分,只有当title属性存在时才显示 -->
|
|
|
<div v-if="title" class="antd-pro-components-standard-form-row-index-label">
|
|
|
<span>{{ title }}</span>
|
|
|
</div>
|
|
|
<!-- 内容部分,使用slot以便于自定义内容 -->
|
|
|
<div class="antd-pro-components-standard-form-row-index-content">
|
|
|
<slot></slot>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>// 定义类名数组,用于根据不同属性动态添加类名
|
|
|
const classes = [
|
|
|
'antd-pro-components-standard-form-row-index-standardFormRowBlock',
|
|
|
'antd-pro-components-standard-form-row-index-standardFormRowGrid',
|
|
|
'antd-pro-components-standard-form-row-index-standardFormRowLast'
|
|
|
]
|
|
|
export default {
|
|
|
name: 'StandardFormRow',
|
|
|
// 定义组件的属性,包括前缀类名、标题、以及三个控制样式的布尔值属性
|
|
|
props: {
|
|
|
prefixCls: {
|
|
|
type: String,
|
|
|
default: 'antd-pro-components-standard-form-row-index-standardFormRow'
|
|
|
},
|
|
|
title: {
|
|
|
type: String,
|
|
|
default: undefined
|
|
|
},
|
|
|
last: {
|
|
|
type: Boolean
|
|
|
},
|
|
|
block: {
|
|
|
type: Boolean
|
|
|
},
|
|
|
grid: {
|
|
|
type: Boolean
|
|
|
}
|
|
|
},
|
|
|
// 计算属性,根据props的值动态返回对应的类名
|
|
|
computed: {
|
|
|
lastCls () {
|
|
|
return this.last ? classes[2] : null
|
|
|
},
|
|
|
blockCls () {
|
|
|
return this.block ? classes[0] : null
|
|
|
},
|
|
|
gridCls () {
|
|
|
return this.grid ? classes[1] : null
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>// 导入全局样式变量
|
|
|
@import '../index.less';
|
|
|
// 定义标准表单行的基础样式
|
|
|
.antd-pro-components-standard-form-row-index-standardFormRow {
|
|
|
display: flex;
|
|
|
margin-bottom: 16px;
|
|
|
padding-bottom: 16px;
|
|
|
border-bottom: 1px dashed @border-color-split;
|
|
|
|
|
|
/deep/ .ant-form-item {
|
|
|
margin-right: 24px;
|
|
|
}
|
|
|
/deep/ .ant-form-item-label label {
|
|
|
margin-right: 0;
|
|
|
color: @text-color;
|
|
|
}
|
|
|
/deep/ .ant-form-item-label,
|
|
|
.ant-form-item-control {
|
|
|
padding: 0;
|
|
|
line-height: 32px;
|
|
|
}
|
|
|
// 标题部分的样式
|
|
|
.antd-pro-components-standard-form-row-index-label {
|
|
|
flex: 0 0 auto;
|
|
|
margin-right: 24px;
|
|
|
color: @heading-color;
|
|
|
font-size: @font-size-base;
|
|
|
text-align: right;
|
|
|
& > span {
|
|
|
display: inline-block;
|
|
|
height: 32px;
|
|
|
line-height: 32px;
|
|
|
&::after {
|
|
|
content: ':';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 内容部分的样式
|
|
|
.antd-pro-components-standard-form-row-index-content {
|
|
|
flex: 1 1 0;
|
|
|
/deep/ .ant-form-item:last-child {
|
|
|
margin-right: 0;
|
|
|
}
|
|
|
}
|
|
|
// 当表单行是最后一个时的样式
|
|
|
&.antd-pro-components-standard-form-row-index-standardFormRowLast {
|
|
|
margin-bottom: 0;
|
|
|
padding-bottom: 0;
|
|
|
border: none;
|
|
|
}
|
|
|
// 当表单行使用block样式时的样式
|
|
|
&.antd-pro-components-standard-form-row-index-standardFormRowBlock {
|
|
|
/deep/ .ant-form-item,
|
|
|
div.ant-form-item-control-wrapper {
|
|
|
display: block;
|
|
|
}
|
|
|
}
|
|
|
// 当表单行使用grid样式时的样式
|
|
|
&.antd-pro-components-standard-form-row-index-standardFormRowGrid {
|
|
|
/deep/ .ant-form-item,
|
|
|
div.ant-form-item-control-wrapper {
|
|
|
display: block;
|
|
|
}
|
|
|
/deep/ .ant-form-item-label {
|
|
|
float: left;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
</style>
|