【vue2+element ui】添加修改共用表单的下拉框回显问题分析以及解决方案(附共用表单代码)

news2024/11/27 10:19:53

目录

      • 简介
      • 问题复原
      • 问题分析
      • 共用表单代码分享

简介

本人前端水平不佳,本文分享在编写个人项目前端代码的时候遇到的回显问题的解决办法,仅供参考。

问题复原

首先展示表单中的问题代码,本次前端的设计是添加和修改操作共用表单,但是其中有一个下拉框展示形式,按照惯例通过:value进行双向绑定,保证点击修改时的回显。

	<!--表单区域-->
    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="30%">
      <el-form ref="form" :model="form" :rules="formRules" label-width="100px">
		...
        <el-form-item label="状态" prop="status">
          <el-select v-model="form.status" placeholder="请选择">
            <el-option label="启用" :value="1"></el-option>
            <el-option label="禁用" :value="0"></el-option>
          </el-select>
        </el-form-item>
        ...
      </el-form>
    </el-dialog>
	
	<!--表单内容如下-->
	form: {
        id: 0,
        roleName: '',
        permission: '',
        status: '1', // 默认设置为启用状态
        createTime: '',
        remark: '',
        businesses: [],
      }

先看一下点击修改时的效果

在这里插入图片描述

可以看出是正常回显的,但是在测试的时候发现,如果点击创建角色的话,无法正常显示。

在这里插入图片描述

问题分析

通过网上查阅和个人测试发现,对于下拉框的v-model绑定类型一定要匹配,比如这里的value接收的应该是number,但是我们的表单中给的默认值是’1’,是string类型的。现在我们把他改成正确的1

在这里插入图片描述

这样问题就解决了

共用表单代码分享

这部分逻辑其实非常简单,添加一个不固定的title,根据点击修改即可。

表单

<!--表单区域-->
    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="30%">
      <el-form ref="form" :model="form" :rules="formRules" label-width="100px">
        <el-form-item label="角色名称" prop="roleName">
          <el-input v-model="form.roleName"></el-input>
        </el-form-item>
        <el-form-item label="权限字符" prop="permission">
          <el-input v-model="form.permission"></el-input>
        </el-form-item>
        <el-form-item label="状态" prop="status">
          <el-select v-model="form.status" placeholder="请选择">
            <el-option label="启用" :value="1"></el-option>
            <el-option label="禁用" :value="0"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="业务系统" prop="businesses">
          <el-select v-model="form.businesses" multiple placeholder="请选择业务系统">
            <el-option v-for="business in businesses" :key="business.id" :label="business.businessName" :value="business.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input type="textarea" v-model="form.remark"></el-input>
        </el-form-item>
      </el-form>

      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button type="primary" @click="handleSave">保存</el-button>
      </div>
    </el-dialog>

data中的内容

dialogVisible: false,
dialogFlag: '',
dialogTitle: '',
form: {
        id: 0,
        roleName: '',
        permission: '',
        status: 1, // 默认设置为启用状态
        createTime: '',
        remark: '',
        businesses: [],
      },
formRules: {
        roleName: [{required: true, message: '请输入角色名称', trigger: 'blur'}],
        permission: [{required: true, message: '请输入权限字符', trigger: 'blur'}],
        businesses: [{required: false, message: '请选择业务系统', trigger: 'blur'}],
      },

methods中的内容

	// 添加窗口
    handleCreate() {
      this.dialogVisible = true;
      this.dialogFlag = 'save';
      this.dialogTitle = '添加角色';
      // 清空表单数据
      this.form = {
        id: 0,
        roleName: '',
        permission: '',
        status: 1,
        createTime: '',
        remark: '',
        businesses: [],
      };
      this.selectedBusinesses = [];
    },
    // 编辑窗口
    handleEdit(row) {
      console.log(row)
      this.dialogVisible = true;
      this.dialogFlag = 'edit';
      this.dialogTitle = '编辑角色';
      // 设置表单数据
      this.form = {
        id: row.id,
        roleName: row.roleName,
        permission: row.permission,
        status: row.status,
        createTime: row.createTime,
        remark: row.remark,
        businesses: row.ids,
      };
      this.selectedBusinesses = this.form.businesses;
    },
    // 添加或修改
    handleSave() {
      this.$refs.form.validate((valid) => {
        // 校验
        if (valid) {
          // 构造角色对象
          const role = {
            id: this.form.id,
            roleName: this.form.roleName,
            permission: this.form.permission,
            status: this.form.status,
            ids: this.form.businesses,
            remark: this.form.remark,
          };
          // 添加
          if (this.dialogFlag === 'save'){
            axios({
              method: "post",
              data: role,
              url: this.urls.insert
            }).then((res) => {
              if (res.data.status === 0){
                this.$message.success('添加成功');
                // 保存成功后关闭对话框
                this.dialogVisible = false;
                this.pagingQuery();
              }else{
                this.$message.error('添加失败');
              }
            })
          }
          // 修改
          if (this.dialogFlag === 'edit'){
            axios({
              method: "post",
              data: role,
              url: this.urls.update
            }).then((res) => {
              if (res.data.status === 0){
                this.$message.success('修改成功');
                // 保存成功后关闭对话框
                this.dialogVisible = false;
              }else{
                this.$message.error('修改失败');
              }
            })
          }
        }
      });
    },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物通博联5G+工业互联网解决方案助力打造5G智能工厂

面对来自成本和市场等压力挑战&#xff0c;工业企业正通过数字化升级提升效益降低成本&#xff0c;拓展发展空间。 随着科技的不断发展&#xff0c;5G技术已经成为了全球关注的焦点。5G技术的高速度、低延迟和大连接特性为各行各业带来了巨大的变革机遇。工业和信息化部有关负…

PYQT 读取摄像头显示视频(Qtimer的方式 )

建立界面 使用qtdesigner设计一个基本的播放视频界面 使用PYUIC生成对应代码文件&#xff0c;如下&#xff1a; # -*- coding: utf-8 -*-# Form implementation generated from reading ui file Test_UI.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: An…

【iOS】多界面传值

文章目录 前言一、属性传值二、协议传值三、block传值四、KVO传值五、KVO的自动触发与手动触发六、通知传值总结 前言 在写网易云音乐以及3GShare包括后面的学生管理系统时&#xff0c;用到许多界面传值方法&#xff0c;特撰写博客记录目前学过的几种多界面传值方法 一、属性…

Zabbix-server监控mysql及httpd服务

目录 一、Zabbix监控mysql数据库 1、为server.Zabbix.com添加服务模板 2、创建mysql服务图形 二、server.zabbix.com服务器操作 编辑chk_mysql.sh脚本 三、server.Zabbix.com测试 四、查看web效果 五、Zabbix监控apache&#xff08;httpd服务&#xff09; 安装master 六、…

基于Python+多层RNN+Tensorflow藏头诗与歌词智能生成-深度学习算法应用(含全部工程源码)+训练数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Tensorflow 环境PyCharm环境 模块实现古诗生成1. 数据预处理2. 模型构建3. 模型训练及保存4. 使用模型生成古诗5. 产生藏头诗6. 用词云展示生成的古诗 歌词生成1. 数据预处理2. 模型构建3. 模型训练并保存4. 生成…

时序约束案例(没有解决)

问题记录 SDI显示项目要求:当外部摄像头无接入时&#xff0c;FPGA产生彩条给显示芯片。当外部摄像头有接入时&#xff0c;显示数据来自于海思。目前能成功显示&#xff0c;但是需要把输出给显示驱动芯片的时钟取反后才可以。尝试使用output delay约束不成功。 项目架构描述 …

【Redis-02】Redis的缓存

Redis的缓存 1.概念1.1什么是缓存1.2为什么使用缓存1.3如何使用1.3.1不适用缓存之前1.3.2 缓存模型和思路&#xff08;使用方法&#xff09;1.3.3 使用之后 2.缓存更新策略2.1数据库缓存不一致解决方案2.2数据库和缓存不一致采用什么方案2.3代码实例 3.缓存穿透3.1缓存穿透是什…

Qt6 Qt Quick UI原型学习QML第六篇

文章目录 效果展示动画片第一小节源码&#xff08;AnimationExample.qml&#xff09;主文件解释语法 源码子文件&#xff08;ClickableImageV2.qml&#xff09;解释语法 效果展示 动画片第一小节 源码&#xff08;AnimationExample.qml&#xff09;主文件 import QtQuick 2.1…

自动驾驶感知系统-激光雷达

感知系统 现有的车载传感器主要包括超声波雷达、激光雷达、毫米波雷达、车载摄像头、红外探头等。主流的自动驾驶感知平台以雷达和车载摄像头为主&#xff0c;呈现多传感器融合发展趋势。基于测量能力和环境适应性&#xff0c;预计雷达和车载摄像头会保持其感知平台霸主地位&a…

Python Selenium设计模式及代码实现

前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享&#xff0c;以便大家在实践中对POM的特点、应用场景和核心思想有一定的理解和掌握。 为什么要用POM 基于python selenium2开始UI级自动化测试并不是多么艰巨的任务。**只需要定位到元素&#xff0c;…

vue中export和export default的使用

<script> export default {name: HelloWorld } $(function () {alert(引入成功) }) </script> 1、export的使用 比喻index.js要使用test.js中的数据&#xff0c;首先在test.js文件中进行导出操作 代码如下&#xff1a; export function list() {alert("list…

EasyExcel写出包含多个sheet页的Excel

EasyExcel导出包含多个sheet页的Excel 1.引入依赖 引入如下的EasyExcel的依赖&#xff0c;或直接下载jar包 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></depende…

文心千帆大模型平台,一站式企业级大模型平台

文心千帆大模型平台&#xff0c;一站式企业级大模型平台 0. 前言1. 人工智能发展历程1.1 传统机器学习1.2 深度学习1.3 大模型时代 2. 文心千帆2.1 文心千帆介绍2.2 文心千帆应用场景2.3 文心千帆平台优势 3. 文心千帆初体验3.1 注册流程3.2 创建应用3.3 在线测试3.4 数据服务3…

玩转ChatGPT:Custom instructions (vol. 1)

一、写在前面 据说GPT-4又被削了&#xff0c;前几天让TA改代码&#xff0c;来来回回好几次才成功。 可以看到之前3小时25条的限制&#xff0c;现在改成了3小时50条&#xff0c;可不可以理解为&#xff1a;以前一个指令能完成的任务&#xff0c;现在得两条指令&#xff1f; 可…

如何将windows下的应用程序直接放到ubuntu下运行

安装wine https://blog.csdn.net/gc_2299/article/details/129077372 安装.NET https://dotnet.microsoft.com/en-us/download/dotnet-framework/net472

Vue中的props配置

结构&#xff1a; main.js //引入Vue import Vue from vue //引入App import App from "./App"; //关闭Vue的生产提示 Vue.config.productionTip false//创建vm new Vue({el:#app,render:h>h(App) }) App.vue <template><div><Student name&qu…

运行Yolov5 7.0遇到的问题

遇到的错误 Traceback (most recent call last):File "E:\Users\user\anaconda3\envs\torch17\lib\site-packages\git\__init__.py", line 89, in <module>refresh()File "E:\Users\user\anaconda3\envs\torch17\lib\site-packages\git\__init__.py"…

RocketMQ Windows环境下启动导致C盘爆满原因及解决办法

原因 rocketmq取的默认路径是user.home路径&#xff0c;也就是用户的根目录&#xff0c;一般存储放在跟路径下的 /store目录。 在源码中也可以看到&#xff1a; 这里会有一个问题&#xff0c;RocketMQ很容易导致C盘空间不够&#xff0c;在使用过程中&#xff0c;创建一个主题默…

二,jmeter的简介和使用

文章目录 一、jmeter简介及安装1. 简介2. 安装 二、jmeter设置语言三、jmeter文件路径说明四、编写jmeter脚本五、乱码的处理&#xff1a;1. 请求内容出现乱码处理方法2. 响应内容出现乱码处理方法 六、写脚本方法扩展录制脚本&#xff1a; 七、 脚本功能增强 一、jmeter简介及…

pytorch学习——第二个模型(逻辑回归)

参考该博客系统学习Pytorch笔记二&#xff1a;Pytorch的动态图、自动求导及逻辑回归 c l a s s { 0 0.5 > y 1 0.5 ≤ y class\left\{ \begin{array}{rcl} 0 & & {0.5 > y}\\ 1 & & {0.5 \le y}\\ \end{array} \right. class{01​​0.5>y0.5≤y​ 根…