CURD 页面都是一个样子,上面搜索条件(表单),中间数据(表格),下面分页。
搜索表单组件类型多,input、datepicker 之类的。这些组件长度不一,并且 form 的 inline 属性也只是让表单水平布局,没有均匀分割。为了让表单能够均匀分割一行的空间,可以用 row 和 col 进行布局。
<el-form
ref="form"
inline
:model="form"
label-width="80px"
>
<el-row>
<el-col span="6">
<el-form-item label="用户姓名">
<el-input
v-model="form.name"
maxlength="100"
/>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="手机号">
<el-input
v-model="form.phone"
type="number"
maxlength="11"
/>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="身份证号">
<el-input
v-model="form.idNumber"
maxlength="100"
/>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="用户ID">
<el-input
v-model="form.id"
maxlength="100"
/>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="检测日期">
<el-date-picker
v-model="form.date"
type="date"
placeholder="选择日期"
style="width: 100%;"
/>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item label="设备号">
<el-input
v-model="form.deviceNo"
maxlength="100"
/>
</el-form-item>
</el-col>
<el-col span="6">
<el-form-item>
<el-button @click="handleClear">重置</el-button>
<linear-blue-button
:loading="loading"
@click="handleSearch"
>查询</linear-blue-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
效果如图:

勉强可用,但还是有问题。input 和 picker 长度不一的问题还在,并且如果页面宽度不够,输入框会掉下去。我希望的是 input 沾满所在空间。比较小的改动方法是直接改全局样式,这比自己二次封装整个搜索区要快。
// search grid
.el-col {
.el-form-item {
display: flex;
}
.el-form-item__content {
flex: 1;
}
}
效果如图:

用了 flex 之后,即使页面宽度不够也不会出现 input 掉下去的问题。