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 相关文章推荐
判断ie的两种简单方法
Aug 12 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
Nov 25 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
js调用刷新界面的几种方式
May 03 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
layui的表单提交以及验证和修改弹框的实例
Sep 09 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 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
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
google 搜索框添加关键字实现代码
2010/04/24 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
javascript实现动态标签云
2015/10/16 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
Python优先队列实现方法示例
2017/09/21 Python
python Celery定时任务的示例
2018/03/13 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
最新自我评价范文
2013/11/16 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
股东协议书
2014/04/14 职场文书
婚前保证书
2014/04/29 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
办公室日常管理制度
2015/08/04 职场文书
心理健康教育主题班会
2015/08/13 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书