Element中el-table和MessageBox组件的二次封装
2019-07-08 16:12
841 查看
[Talk is cheap. Show me the code]
不想看理论知识请直接移步最后代码示例。
一、封装目的
在使用ElementUI过程中,发现一些组件的代码量还是过多,并且项目中频繁使用,所以就对组件进行了二次封装,并记录在博客中,欢迎共同讨论学习。
二、代码示例
2.1 MessageBox的封装
/** * 封装 在一个叫commonFn的公共服务里面 * @param {*弹窗提示信息} msgContent * @param {*弹窗标题} msgTitle * @param {*弹窗类型: * 'warning', * 'success ', * 'info', * 'error' * 四种类型 * } msgType */ MessageBox( msgContent = '此操作将永久删除此条数据, 是否继续?', msgTitle = '提示信息', msgType = 'warning') { var msgBox = MessageBox.confirm(msgContent, msgTitle, { confirmButtonText: '确定', cancelButtonText: '取消', type: msgType }) return msgBox } /** * 哪里需要在哪里调用即可。 *common是一个公共的函数服务,链式调用即可。 *参数与封装的相对应。 */ commonFn.MessageBox('ds', '23', 'success').then(()=> { console.log('确认回调') }).catch(() => { console.log('取消回调') })
2.2 el-table表格的封装
el-table组件封装,这个是同事有封装过得,我在原有的基础上进行了一定的改动,代码量比较多,很多参数ElementUI上都有,详情参加:Element中文教程
<el-table :key="tableKey" :data="list" stripe fit highlight-current-row tooltip-effect="light" style="width: 100%;" :cell-style="{'vertical-align':'left','padding':'6px'}" @selection-change="handleSelectionChange" @cell-click="handleColumn" @select="selectBox" @select-all="selectBoxAll" > <el-table-column v-if="carlist" type="selection" width="55" /> <el-table-column v-for="(item,i) in tableColumu" :key="i" :label="item.label" :prop="item.field" :min-width="item.width" :formatter="formatterParmas" > <template slot-scope="scope"> <span v-if="item.field==='address_type'">{{ scope.row[item.field] | addressTypeFilter }}</span> <span v-else-if="item.field==='is_default'"> <el-checkbox v-model="scope.row[item.field]" true-label="1" false-label="0" disabled /> </span> <span v-else-if="item.field==='source'"> {{ scope.row[item.field]|sourceFilter(scope.row[item.field]) }} </span> <span v-else-if="item.field==='audit_status'"> <span v-if="scope.row[item.field]=='0'" style="color:#FFAA00">待审核</span> <span v-if="scope.row[item.field]=='1'" style="color:#F34B4B">审核拒绝</span> <span v-if="scope.row[item.field]=='2'" style="color:#6BCE41">审核通过</span> </span> <span v-else-if="item.field==='org_type'"> <span v-if="scope.row[item.field]=='0'">承运商</span> <span v-if="scope.row[item.field]=='1'">货主</span> <span v-if="scope.row[item.field]=='2'">货主/承运商</span> </span> <span v-else-if="item.field==='accountant'">{{ scope.row[item.field]==='1' ? '是' : '否' }}</span> <span v-else>{{ scope.row[item.field] }}</span> </template> </el-table-column> <el-table-column fixed="right" :label="tableOption.label" min-width="200" align="center"> <template slot-scope="scope"> <el-button v-for="(item,i) in tableOption.options" :key="i" type="text" class="link-type" @click="handelBtn(item.methods,scope.row)">{{ item.label }}</el-button> </template> </el-table-column> </el-table>
使用:
这里其实是Vue组件的正常传参,调用。
部分情况说明:
我这里使用了三种方法对后台的数据进行处理,个人感觉是可以优化的,根据情况只使用一种比较好。
欢迎小伙伴在评论区说出自己的想法
如果有任何关于本文的意见,欢迎在文章下方留言,我会在看到的第一时间回复。
相关文章推荐
- 用element-ui之el-form、el-table、el-pagination组件实现列表展示和查询条件的渲染
- vue+element ui 使用$refs获取el-dialog 下的 el-table 组件 ,以及使用table多选,默认选中
- vue+element table的二次封装
- 二次封装el-button实现的vue权限按钮组件
- 对HibernateDaoSupport进行二次封装:hibernate增删改查组件
- VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
- 对HibernateDaoSupport进行二次封装:hibernate增删改查组件
- 详解VUE 对element-ui中的ElTableColumn扩展
- vue+elementui的table行内实现el-upload文件添加/多文件上传
- 关于element-ui 中使用Notice组件(Message、MessageBox、Notification)所遇到的坑
- element-ui 封装dialog组件
- vue+element获取el-table某行中的下标,根据下标操作数组对象
- android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件
- 当你用element-ui遇到需要在el-table-column上v-for时,这篇文章你能用的上,也就是你需要二级循环
- 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
- Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装
- elementui el-table 表格列做了处理,导出表格功能
- ElementUI Table公共组件,快速完成table功能搭建
- 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
- element-ui的el-table和el-form表单校验嵌套使用