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表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...
随机推荐
- 【ServerSentEvents】服务端单向消息推送
依赖库: Springboot 不需要而外支持,WebMVC组件自带的类库 浏览器要检查内核是否支持EventSource库 Springboot搭建SSE服务: 这里封装一个服务Bean, 用于管理 ...
- 【Vue】12 VueRouter Part2 路由与传参
[编程式导航] 我们希望在路由跳转之前执行某一些功能... <template> <div id="app"> <h2>这是App.vue组件的 ...
- 【转载】 解决运行docker命令要用sudo的问题
将当前登录的用户添加到docker组中,这样以后在访问docker时就不用在sudo了 1. 查看是否创建docker 组 cat /etc/group | grep docker 2.创建docke ...
- (续)MindSpore计算框架如何发布训练好的模型到官方模型仓库MindSpore_Hub上 —— 对fork的MindSpore_Hub进行PR提交
参考: https://gitee.com/mindspore/mindspore/blob/r1.2/CONTRIBUTING.md ================================ ...
- Odd and Even Zeroes 题解
前言 题目链接:洛谷:UVA. 题目简述 定义 \(\operatorname{count}(num)\) 表示 \(num\) 末尾 \(0\) 的个数.给出 \(n\)(\(n \leq 10^{ ...
- 《最新出炉》系列小成篇-Python+Playwright自动化测试-67 - 模拟手机浏览器兼容性测试
1.简介 在日常工作中,我们会遇到需要使用不同的硬件设备测试兼容性的问题,尤其是现在手机型号基本上是每个厂家每年发布一款新机型,而且手机的屏幕大小分辨率五花八门的,我们基本不可能全部机型都用真机测试一 ...
- 闲鱼卖2000元的带腾讯备案的 gaapqcloud.com.cn 域名低成本获取方法!
最近在闲鱼看到有人卖域名,声称是腾讯的备案,还卖1000多元!逆天了!这个信息差是真能割韭菜,我一查,这不就是腾讯云的全球应用加速域名吗?????这样也能赚到钱?? 获取方法 进入腾讯云全球应用加速 ...
- WM_LBUTTONDOWN,WM_LBUTTONUP
WM_LBUTTONDOWN //鼠标左键按下消息WM_LBUTTONUP //鼠标左键弹起消息参数和按下一样 当用户在窗口的客户区域中按住鼠标左键时,会发布WM_LBUTTONDOWN消息.如果未捕 ...
- 如何选择 Linux 发行版
简介 要建立云服务器,首先需要安装操作系统.在现代环境中,几乎所有情况下都是指 Linux 操作系统.从历史上看,Windows 服务器和其他类型的 Unix 在特定的商业环境中都很流行,但现在几乎每 ...
- animate动画库的使用
在vue中便捷使用animate动画库效果. 安装animate动画库 npm install animate.css --save 在vue跟目录中 main.js 导入animate动画库 imp ...