<template>
<el-form
:inline="true"
style="display: flex; flex-direction: row; flex-wrap: wrap;flex: 1;"
class="formClass"
label-width="90px"
>
<el-form-item
v-for="(item, index) in this.selectInline"
:key="index"
:label="item.label"
style="margin:10px 10px 0 0;"
>
<el-input
size="small"
v-model="item.value"
v-if="item.type == 'input'"
:placeholder="item.label"
></el-input>
<el-select
v-else-if="item.type == 'select'"
size="small"
v-model="item.value"
:placeholder="item.label"
collapse-tags
@change="SelectHandle(index)"
filterable
:multiple="item.multi"
>
<el-option
v-for="(option, optionIndex) in item.options"
:key="optionIndex"
:label="option.ITEM_NAME"
:value="option.ITEM_NAME"
></el-option>
</el-select>
<el-date-picker
v-else-if="item.type == 'time'"
v-model="item.value"
type="datetimerange"
style="width:350px;"
:picker-options="timeOptions"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
size="small"
align="right"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="子设备类型:" style="margin:10px 8px 0 0;">
<el-select
v-model="selectInline[2].plcType"
size="small"
:placeholder="'请选择'"
autocomplete="off"
>
<el-option label="Pump" value="0" />
<el-option label="Heater" value="1" />
<el-option label="Scrubber" value="2" />
</el-select>
</el-form-item>-->
<!-- <el-form-item label="厂商名称:" style="margin:10px 8px 0 0;">
<el-select
v-model="selectInline[2].factoryName"
size="small"
:placeholder="'请选择'"
autocomplete="off"
>
<el-option label="Pump" value="0" />
<el-option label="Heater" value="1" />
<el-option label="Scrubber" value="2" />
</el-select>
</el-form-item>-->
<!-- <el-form-item label="部门:" style="margin:10px 8px 0 0;">
<el-select
v-model="selectInline[2].factoryName"
size="small"
:placeholder="'请选择'"
autocomplete="off"
>
<el-option label="Pump" value="0" />
<el-option label="Heater" value="1" />
<el-option label="Scrubber" value="2" />
</el-select>
</el-form-item>-->
<!-- <el-form-item label="科室:" style="margin:10px 20px 0 0;">
<el-select
v-model="selectInline[2].factoryName"
size="small"
:placeholder="'请选择'"
autocomplete="off"
>
<el-option label="Pump" value="0" />
<el-option label="Heater" value="1" />
<el-option label="Scrubber" value="2" />
</el-select>
</el-form-item>-->
<el-form-item style="margin:10px 0 0 90px;">
<el-button
v-if="isaddWork"
type="primary"
icon="el-icon-plus"
@click="addWorkFn"
size="small"
v-has="{name:'子设备v-has管理',value:'添v-has加'}"
>添加</el-button>
<el-button type="primary" @click="onSubmit" size="small" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="onReset" size="small" icon="el-icon-refresh">重置</el-button>
<el-button v-if="isdownload" type="primary" @click="onSubmit" size="small">下载</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
name: "toolbar",
props: {
selectInline: {
type: Array
},
inline: {
type: Boolean
},
isdownload: {
default: false,
type: Boolean
},
isaddWork: {
default: false,
type: Boolean
},
data_fields: {
type: Object
},
data_execl: {
type: Array
},
excel_Alltitle: {
type: String
}
},
data () {
return {
timeOptions: {
shortcuts: [
{
text: "最近一周",
onClick (picker) {
const end = new Date()
const start = new Date()
start.setTime(
start.getTime() - 3600 * 1000 * 24 * 7
)
picker.$emit("pick", [start, end])
}
},
{
text: "最近一个月",
onClick (picker) {
const end = new Date()
const start = new Date()
start.setTime(
start.getTime() - 3600 * 1000 * 24 * 30
)
picker.$emit("pick", [start, end])
}
},
{
text: "最近三个月",
onClick (picker) {
const end = new Date()
const start = new Date()
start.setTime(
start.getTime() - 3600 * 1000 * 24 * 90
)
picker.$emit("pick", [start, end])
}
}
]
}
}
},
watch: {
data_fields (s1, s2) {
console.log("s1", s1)
console.log("s2", s2)
},
immediate: true,
deep: true
},
methods: {
// 添加工单
addWorkFn () {
this.$emit("addWorkFn", this.selectInline)
},
onSubmit () {
this.$emit("onSubmit", this.selectInline)
},
SelectHandle (index) {
this.$emit("SelectHandle", index)
},
downLoadAllData () {
this.$emit("downLoadAllData")
},
onReset () {
this.$emit("onReset")
}
}
};
</script> <style scoped>
.formClass {
/* display: flex; */
/* flex-direction: column; */
/* justify-content: space-between; */
}
</style>

使用组件的时候:

   <tool-bar
:isaddWork="true"
:inline="true"
:selectInline="this.selectInline"
@onSubmit="OnSubmit"
@SelectHandle="SelectHandle"
@onReset="onReset"
@addWorkFn="addHandle"
></tool-bar>
selectInline 的数据格式:
   selectInline: [
{
field: "eqpName",
label: "部门",
type: "select",
value: "",
options: [],
},
{
field: "chamberName",
label: "科室",
type: "select",
value: "",
multi: false,
options: [],
},
{
field: "plcName",
label: "设备类型",
type: "select",
value: "",
options: [],
plcType: '',
factoryName: '',
},
{
field: "plcName",
label: "厂商",
type: "select",
value: "",
options: [],
plcType: '',
factoryName: '',
},
{
field: "plcName",
label: "子设备名称",
type: "select",
value: "",
options: [],
plcType: '',
factoryName: '',
},
],

element+vue2的查询form表单封装成组件复用的更多相关文章

  1. jquery自动将form表单封装成json的具体实现

    前端页面:<span style="font-size:14px;"> <form action="" method="post&q ...

  2. vue+element 表单封成组件(1)

    作为一名刚接触vue不到一个月的菜鸟,思想还没有从操作DOM转变为数据驱动,看vue的代码处处别扭.组里为了让我熟悉vue交给了我一个将element 表单封装成组件的练手任务.由于开发过程中遇到的表 ...

  3. Element Ui使用技巧——Form表单的校验规则rules详细说明

    Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...

  4. vue+element创建动态的form表单.以及动态生成表格的行和列

    动态创建form表单,网上有插件 (form-create) 不过我不知道它怎么用,没有使用成功,如果你使用成功了,欢迎下方留言. 最后我使用了笨方法,针对各个表单写好通用的组件,然后根据type用v ...

  5. form表单数据封装成json格式并提交给服务器

    1.jsp代码,form表单: <form action="#" id="costForm"> <input type="hidde ...

  6. js使用工具将表单封装成json字符串传到后台,js截取字符串(学生笔记)

    <script src="js/jquery.min.js"></script> <script src="https://cdn.boot ...

  7. vue+element 表单封成组件(2)

    今天我们继续把时间选择器,多选框和单选框加上 父组件(在昨天的基础上增加): <template> <el-form :model="ruleForm" ref= ...

  8. jQuery将form表单的数据封装成json对象

    /** * 自动将form表单封装成json对象 */ $.fn.serializeObject = function() { var o = {}; var a = this.serializeAr ...

  9. vue3 element-plus 配置json快速生成form表单组件,提升生产力近600%(已在公司使用,持续优化中)

    ️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农‍♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...

  10. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

随机推荐

  1. 【ElasticSearch】02 查询操作

    准备样本: Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询 查询条件还适用于删除操作   创建索引: # PUT http://127.0.0.1:9200/st ...

  2. 【Game】安装EA的Origin(烂橘子)平台太慢 解决办法

    情况是购买了Steam上的爹5,本体下载完成之后需要安装烂橘子平台 然后发现走官方提供下载的平台根本装不上来,安装贼慢 折腾什么配置文件,改HOST都是一些乱七八糟的操作,都没说清楚这干嘛用的 解决方 ...

  3. 【SpringMVC】05 RestFul风格

    什么是RestFul风格? 一个资源定位和资源操作的风格,不是标准,也不是协议, 基于此风格的路径访问可以隐藏真实的参数传递,以提高网站的安全访问 以往的请求参数: jdbc:mysql://loca ...

  4. application.properties配置文件存储参数

    配置文件存储参数 当我们需要很多的参数时,项目很大,文件很多,每涉及一个技术,每涉及一个第三方的参数时,当这些参数数据发生变化,修改会相当的麻烦.这时候把参数配置到application.proper ...

  5. python3.9的nogil版本编译pytorch2.0.1源码报错——失败

    关于python3.9的nogil版本参看: PEP 703作者给出的一种no-GIL的实现--python3.9的nogil版本 ================================== ...

  6. 【转载】【转载视频】 如何成为好的IT技术面试官

    在外网找到了一个IT技术面试官的面试心得,感觉还不错,挺有借鉴的,这里mark一下. 地址: https://www.youtube.com/watch?v=yFMmkoqDPlM ========= ...

  7. Linux中scanf类型匹配错误,特指scanf("%d", &c ) ,导致死循环的解决方法 —— fflush(stdin)和getchar()的使用

    如题,朋友领导的孩子大学作业是个C语言编写的管理信息系统发来要我给改改,原代码的配置环境是Windows的C环境,由于10多年没有搞过Windows下的C语言了于是换上了Ubuntu18.04的系统上 ...

  8. How to 'apt-get install python-opengl' on Ubuntu22.04

    ImportError: Error occurred while running `from pyglet.gl import *` HINT: make sure you have OpenGL ...

  9. oracle利用job实现存储过程异步执行

    1.背景 在实际开发中,我们可能会利用存储过程批量处理业务, 对应有些存储过程可能会执行很长时间,这时我们需要客户端点操作后,存储过程异步执行 具体实现如下 1.创建处理业务的存储过程:sp_test ...

  10. 教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

    一直以来,大数据量一直是爆炸性增长,每天几十 TB 的数据增量已经非常常见,但云存储相对来说还是不便宜的.众多云上的大数据用户特别希望可以非常简单快速的将文件移动到更实惠的 S3.OSS 上进行保存, ...