|
@@ -1,8 +1,9 @@
|
|
|
<template>
|
|
|
<el-col class="czr-form-column" :class="{
|
|
|
- transparent: transparent
|
|
|
+ transparent: transparent,
|
|
|
+ 'has-width': !!width
|
|
|
}" :span="span" :offset="offset" ref="ref_czrFormColumn">
|
|
|
- <el-form-item :label="label" :label-width="labelWidth" :class="{
|
|
|
+ <el-form-item :label="label" :label-width="labelWidthCpt" :class="{
|
|
|
['link_' + link + ($attrs.type ? '_' + $attrs.type : '')]: true,
|
|
|
required: required !== false,
|
|
|
'no-label': (labelWidth == 0 || labelWidth === '0px') && !isValue(label) && !$slots.label,
|
|
@@ -237,7 +238,7 @@ const props = defineProps({
|
|
|
param: {}, // 绑定值
|
|
|
label: {type: String, default: ''}, // 标题
|
|
|
required: {default: false}, // 必填项
|
|
|
- labelWidth: {type: [String, Number], default: 'auto'}, // 标题宽度
|
|
|
+ labelWidth: {type: [String, Number], default: ''}, // 标题宽度
|
|
|
link: {type: String, default: 'input', validator(val: string) {
|
|
|
return ['cascader', 'checkbox', 'date', 'datetime', 'input', 'radio', 'select', 'switch', 'dept', 'time', 'upload', 'number', 'input-number', 'tree-select', 'rich', 'area'].includes(val)
|
|
|
}
|
|
@@ -249,7 +250,8 @@ const props = defineProps({
|
|
|
unit: {default: '', type: String}, // 单位
|
|
|
otherInfo: {}, // 其他信息
|
|
|
layout: {},
|
|
|
- transparent: {default: false}
|
|
|
+ transparent: {default: false},
|
|
|
+ width: {default: ''}
|
|
|
})
|
|
|
const attrs = (getCurrentInstance() as ComponentInternalInstance).attrs
|
|
|
const state = reactive({
|
|
@@ -307,6 +309,16 @@ const handleValidate = (val: any = undefined, val2: any = undefined) => {
|
|
|
}
|
|
|
const formLayout = inject('form-layout', 'x')
|
|
|
const handleEnterFunc = inject('handle-enter', () => {})
|
|
|
+const formLabelWidth = inject('form-label-width', '')
|
|
|
+const labelWidthCpt = computed(() => {
|
|
|
+ if (props.labelWidth) {
|
|
|
+ return props.labelWidth
|
|
|
+ }
|
|
|
+ if (formLabelWidth) {
|
|
|
+ return formLabelWidth
|
|
|
+ }
|
|
|
+ return 'auto'
|
|
|
+})
|
|
|
const handleEnter = () => {
|
|
|
handleEnterFunc?.()
|
|
|
}
|
|
@@ -356,8 +368,11 @@ defineExpose({
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
.czr-form-column {
|
|
|
- max-width: unset;
|
|
|
- flex: unset;
|
|
|
+ &.has-width {
|
|
|
+ width: v-bind(width);
|
|
|
+ max-width: v-bind(width);
|
|
|
+ flex: unset;
|
|
|
+ }
|
|
|
&.transparent {
|
|
|
:deep(.el-form-item) {
|
|
|
margin-bottom: 0;
|
|
@@ -368,7 +383,7 @@ defineExpose({
|
|
|
}
|
|
|
}
|
|
|
:deep(.el-form-item) {
|
|
|
- height: 2.25rem;
|
|
|
+ min-height: 2.25rem;
|
|
|
&.link_time {
|
|
|
margin-top: 1px;
|
|
|
}
|
|
@@ -392,7 +407,7 @@ defineExpose({
|
|
|
text-align: right;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- padding-left: 10px;
|
|
|
+ padding-left: 0.25rem;
|
|
|
color: $textColor;
|
|
|
font-weight: normal;
|
|
|
}
|
|
@@ -421,6 +436,9 @@ defineExpose({
|
|
|
-webkit-text-fill-color: $textColor;
|
|
|
}
|
|
|
}
|
|
|
+ .el-input__wrapper, .el-textarea__inner {
|
|
|
+ border-radius: 2px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|