element+vue2的查询form表单封装成组件复用
<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表单封装成组件复用的更多相关文章
- jquery自动将form表单封装成json的具体实现
前端页面:<span style="font-size:14px;"> <form action="" method="post&q ...
- vue+element 表单封成组件(1)
作为一名刚接触vue不到一个月的菜鸟,思想还没有从操作DOM转变为数据驱动,看vue的代码处处别扭.组里为了让我熟悉vue交给了我一个将element 表单封装成组件的练手任务.由于开发过程中遇到的表 ...
- Element Ui使用技巧——Form表单的校验规则rules详细说明
Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...
- vue+element创建动态的form表单.以及动态生成表格的行和列
动态创建form表单,网上有插件 (form-create) 不过我不知道它怎么用,没有使用成功,如果你使用成功了,欢迎下方留言. 最后我使用了笨方法,针对各个表单写好通用的组件,然后根据type用v ...
- form表单数据封装成json格式并提交给服务器
1.jsp代码,form表单: <form action="#" id="costForm"> <input type="hidde ...
- js使用工具将表单封装成json字符串传到后台,js截取字符串(学生笔记)
<script src="js/jquery.min.js"></script> <script src="https://cdn.boot ...
- vue+element 表单封成组件(2)
今天我们继续把时间选择器,多选框和单选框加上 父组件(在昨天的基础上增加): <template> <el-form :model="ruleForm" ref= ...
- jQuery将form表单的数据封装成json对象
/** * 自动将form表单封装成json对象 */ $.fn.serializeObject = function() { var o = {}; var a = this.serializeAr ...
- vue3 element-plus 配置json快速生成form表单组件,提升生产力近600%(已在公司使用,持续优化中)
️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...
- 封装Vue Element的form表单组件
前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...
随机推荐
- nacos配置&gateway配置服务发现一直报500
项目场景: 这两天不是一直在搞简化配置.使用公共配置.我的服务可以通过网关访问这几个任务嘛,也是不断地踩坑补知识才总算把这几个任务都搞好了,下面就是记录过程中遇到的问题. 使用公共配置 因为发现项目使 ...
- 【C】Re07 二级指针,指针与参数
一.二级指针: 变量 = 内存地址 + 存储值: 指针 = 内存地址 + 变量内存地址: 二级指针 = 内存地址 + 指针内存地址: 多级指针 = 内存地址 + 上一级内存地址: void moreP ...
- 【Layui】01 快速入门
[原生JavaScript 与 JQuery] <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 普通用户权限运行docker
docker安装后默认权限是管理员,在Ubuntu系统中需要使用sudo命令,但是很多时候docker的拉取操作都是写在脚步里面的,因此执行的时候十分的难搞,如果给脚本sudo权限后那么整个的环境路径 ...
- 《Python数据可视化之matplotlib实践》 源码 第四篇 扩展 第十一章
图 11.2 import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np plt.axes([0.1, ...
- 强化学习的REIINFORCE算法和交叉熵RL算法
注意: 本文并不讲REINFORCE算法,而是讲强化学习的交叉熵算法,关于REINFORCE算法可以参看: https://www.cnblogs.com/devilmaycry812839668/p ...
- 字符串系列目录&&说明
字符串准备写成一个系列. 目录 \(\text{KMP笔记}\) \(\text{Manacher笔记}\) [] [] [] 格式与说明 下面的说明和格式将被应用于整个系列. 说明 所有字符串的下标 ...
- Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!
内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...
- vue-表单与v-model
使用 v-model 后,表羊控件显示的值只依赖所绑定的数据,不再关心初始化时的 value 属性,对于 textarea></textarea> 之间插入的值,也不会生效. 使用 ...
- apr库编译及队列使用笔记
操作系统 :CentOS 7.9_x64 apr库版本:apr-1.7.4 & apr-util-1.6.3 gcc 版本:4.8.5 队列功能在C++或Python等脚本语言里面,是很容易就 ...