vue2 SearchForm组件 表单查询

vue2SearchForm组件 表单查询

SearchForm.vue

<template>
    <div class="form-wrap">
        <el-form
            ref="ruleForm"
            :model="ruleForm"
            :rules="rules"
            :label-width="`${labelWidth}px`"
            class="form-wrap-con"
        >
            <el-row
                style="width: 100%;flex-wrap: wrap;"
                type="flex"
            >
                <el-col
                    v-for="(item,idx) in ruleFormconfig"
                    :key="idx + 'filterArr'"
                    justify="space-around"
                    :xs="24"
                    :sm="24"
                    :md="12"
                    :xl="xlSpanCol"
                    class="col-wrap"
                >
                    <el-form-item
                        v-if="item.type == 'input'"
                        :key="item.prop"
                        :ref="item.prop"
                        :label="item.label"
                        :prop="item.prop"
                    >
                        <el-input
                            v-model="ruleForm[item.prop]"
                            :type="item.inputType"
                            :placeholder="item.placeholder || '请输入'"
                        />
                    </el-form-item>
                    <el-form-item
                        v-else-if="item.type == 'select'"
                        :key="item.prop"
                        :label="item.label"
                        :prop="item.prop"
                    >
                        <el-select
                            :ref="item.prop"
                            v-model="ruleForm[item.prop]"
                            :placeholder="item.placeholder || '请选择'"
                            :multiple="item.multiple || false"
                            :collapse-tags="item.multiple || false"
                            :filterable="item.filterable"
                            :clearable="item.clearable"
                            :reserve-keyword="item.reserveKeyword"
                            :remote-method="item.remoteMethod"
                            :loading="item.loading"
                            class="collapse_class"
                        >
                            {{ item.loading }}
                            <el-option
                                v-for="selectItem in item.options"
                                :key="selectItem.value"
                                :label="selectItem.label"
                                :value="selectItem.value"
                            />
                        </el-select>
                    </el-form-item>
                    <el-form-item
                        v-if="item.type == 'date'"
                        :key="item.prop"
                        :ref="item.prop"
                        :label="item.label"
                        :prop="item.prop"
                    >
                        <el-date-picker
                            v-model="ruleForm[item.prop]"
                            :type="item.inputType || 'date'"
                            :placeholder="item.placeholder || '选择日期'"
                            :value-format="item.format || 'yyyy-MM-dd'"
                            :clearable="item.clearable"
                            :picker-options="item.pickerOptions"
                            range-separator="-"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                        />
                    </el-form-item>
                    <slot
                        v-if="item.slotName"
                        :name="item.slotName"
                    />
                </el-col>
                <!-- 查询 slot -->
                <el-col
                    v-if="btnSlot"
                    class="col-wrap"
                    :xs="24"
                    :sm="24"
                    :md="12"
                    :xl="xlSpanCol"
                >
                    <slot
                        class="btnSlot"
                        name="btnSlotName"
                    />
                </el-col>
            </el-row>
        </el-form>
    </div>
</template>

<script>
export default {
    name: 'SearchForm',
    components: {},
    props: {
        ruleFormconfig: {
            type: Array,
            default() {
                return {};
            }
        },
        ruleForm: {
            type: Object,
            default() {
                return {};
            }
        },
        rules: {
            type: Object,
            default() {
                return {};
            }
        },
        btnSlot: {
            type: Boolean,
            default: false
        },
        labelWidth: {
            type: Number,
            default: 100
        },
        xlSpanCol: {
            type: Number,
            default: 8
        }
    },
    data() {
        return {};
    },
    methods: {
        // 提交
        submitForm(formName) {
            this.$emit('submitForm', formName);
        },
        // 重置
        resetForm(formName) {
            this.$emit('resetForm', formName);
        }
    }
};
</script>
<style  lang="scss" scoped>
.form-wrap {

	::v-deeep .el-col {
		height: 32px!important;
	}

	.form-wrap-con {

		.col-wrap {
			margin-bottom: 16px;
			height: 32px;

			::v-deep .el-input {
				width: 272px;
			}

			::v-deep .el-range-editor.el-input__inner {
				width: 272px;
			}
		}
	}
}

</style>


使用

            <SearchForm
                ref="form"
                :rule-formconfig="ruleFormconfig"
                :rule-form="ruleForm"
                :btn-slot="true"
                :label-width="110"
            >
                <div slot="agentid">
                    <AgentIdSelectList
                        ref="AgentIdSelectRef"
                        v-model="ruleForm.agentid"
                    />
                </div>
                <el-button
                    slot="btnSlotName"
                    @click="reset"
                >
                    重置
                </el-button>
                <el-button
                    slot="btnSlotName"
                    type="primary"
                    color="#2469F1"
                    @click="search"
                >
                    查询
                </el-button>
            </SearchForm>

效果

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值