vue+element 模态框表格形式的可编辑表单实现


Posted in Javascript onJune 07, 2019

要实现的效果如下,初始化的时候,不可编辑,点击编辑按钮,编辑按钮隐藏,取消编辑按钮显示;部分input输入框变为可编辑

vue+element 模态框表格形式的可编辑表单实现

vue+element 模态框表格形式的可编辑表单实现

<el-dialog title="营销单详情" width="920px" @close="isEdit = false" class="dialog dialogAdd" custom-class="custom-dialog"
      :visible.sync="dialogEditVisible" :close-on-click-modal='false'>
    <el-form ref="editForm" style="margin-right: 20px;" :model="editForm" :inline="true" label-position="right" label-width="110px" size="mini">
      <el-form-item label="工单号" prop="no">
        <el-input v-model="editForm.no" disabled></el-input>
      </el-form-item>
      <el-form-item label="客户姓名" prop="khxm">
        <el-input v-model="editForm.khxm" :disabled="!isEdit || editForm.openId"></el-input>
      </el-form-item>
      <el-form-item label="联系电话" prop="khdh">
        <el-input v-model="editForm.khdh" :disabled="!isEdit || editForm.openId"></el-input>
      </el-form-item>
      <el-form-item label="客户地址">
        <el-input v-model="editForm.address" disabled></el-input>
      </el-form-item>
      <el-form-item label="营销人员-工号">
        <el-input v-model="editForm.yxry" disabled></el-input>
      </el-form-item>
      <el-form-item label="网格区域">
        <el-input v-model="editForm.qywg" disabled></el-input>
      </el-form-item>
      <el-form-item label="业务类型" prop="ywlx">
        <el-select v-model="editForm.ywlx" :disabled="!isEdit" placeholder="">
          <el-option v-for="item in ywlxList" :key="item" :label="item" :value="item"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="报装宽带兆数(M)" prop="kdzs" class="long-label">
        <el-select v-model="editForm.kdzs" :disabled="!isEdit" placeholder="">
          <el-option v-for="item in kdzsList" :key="item" :label="item" :value="item"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="手机基础套餐(最低消费)" class="long-label" prop="sjjctc" >
        <el-select v-model="editForm.sjjctc" :disabled="!isEdit" placeholder="">
          <el-option v-for="item in sjtcList" :key="item" :label="item" :value="item"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="业务受理单截屏">
        <p><a class="text-base" @click="show">查看图片</a></p>
      </el-form-item>
      <el-form-item label="下单时间" prop="createTime" >
        <el-input v-model="editForm.createTime" disabled></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="editForm.remark" :disabled="!isEdit"></el-input>
      </el-form-item>
    </el-form>

    <div slot="footer" class="dialog-footer" v-if="editForm.state != 3">
      <el-button v-if="!isEdit" @click="isEdit = true" size="mini">编 辑</el-button>
      <el-button v-else @click="cancelEdit" size="mini">取消编辑</el-button>
      <el-button type="primary" @click="saveEdit" size="mini">保 存</el-button>
    </div>
  </el-dialog>

data中的数据

editForm: {},        // 新增表单
 isEdit: false,   // 是否编辑
 dialogEditVisible: false,  // 新增模态框
 images: [], // 图片信息
 ywlxList: [],    // 业务类型列表
 kdzsList: ['50', '100', '200', '300'],    // 报装宽带兆数列表
 sjtcList: ['38', '58', '88', '98', '128', '138', '188'],    // 手机基础套餐列表
viewDetail(row){
    console.log(row)
    this.editForm = this.deepClone(row)
    this.dialogEditVisible = true
    this.$post("/anapi/YxdController/getById", {id: row.id}, (data) => {
      this.editForm = data.yxd
      this.editForm.qywg = row.name1 + row.name2 + row.name3 + row.gridName
      this.editForm.address = row.name1 + row.name2 + row.name3 + row.gridName + row.xxdz
      this.editForm.yxry = row.yxCname + '-' + row.yxId
      this.currentItem = this.deepClone(this.editForm)

      let imgs = data.yxd.imgs || []
      this.images = []
      imgs.map(item => {
        this.images.push(this.config.httpHeadUrl + item)
      })
    })
  },
  // 保存编辑
  saveEdit(){
    this.$refs.editForm.validate((valid) => {
      if (valid) {
        this.startLoading()
        this.$post("/api/YxdController/editYxd", this.editForm, (data) => {
          this.$message.success("修改成功!")
          this.dialogEditVisible = false
          this.getTableData(1)
        })
      }
    })
  },
  // 取消编辑
  cancelEdit(){
    this.isEdit = false
    this.editForm = this.deepClone(this.currentItem)
  },

  // 查看图片
  inited (viewer) {
    this.$viewer = viewer
  },
  show () {
    if(!this.images.length){
      this.$message.error("暂无图片")
      return
    }
    this.$viewer.show()
  },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript方法和技巧大全
Dec 27 Javascript
Prototype String对象 学习
Jul 19 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
DOM基础教程之模型中的模型节点
Jan 19 Javascript
js获取域名的方法
Jan 27 Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 Javascript
使用Web Uploader实现多文件上传
Jun 08 Javascript
JavaScript登录验证码的实现
Oct 27 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
layui的数据表格+springmvc实现搜索功能的例子
Sep 28 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
vue-cli3项目展示本地Markdown文件的方法
Jun 07 #Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 #Javascript
详解vue项目中实现图片裁剪功能
Jun 07 #Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 #Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
Jun 07 #Javascript
Vue中实现权限控制的方法示例
Jun 07 #Javascript
vue 父组件中调用子组件函数的方法
Jun 06 #Javascript
You might like
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
JS 表单验证大全
2011/11/23 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
微信小程序时间轴实现方法示例
2019/01/14 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
中英文自我评价语句
2013/12/20 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
学生手册家长评语
2014/02/10 职场文书
实习生评语
2014/04/26 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL