做一个多级动态表单,可以保存数据和回显数据

news2025/4/3 5:01:30

<template>

  <div class="two">

    <button class="save" @click="saveBtn">保存数据</button>

    <button class="sd" @click="showBtn">回显数据</button>

    <div class="all" @click="addAll()">+新增收信规则</div>

    <div class="allContent" v-for="(items,index) in allList" :key="items.id">

      <div class="other">

        <p>{{items.name}}</p>

        <input type="text" placeholder="新规则名称" v-model="items.inputTxt" />

        <button class="rowDel" @click="delAll(items,index)">-</button>

      </div>

      <div class="otherInput">

        <p>当邮件到达,满足以下条件时:</p>

        <div class="top" v-for="(task,idx) in items.itemsList" :key="task.id">

          <select v-model="task.type">

            <option

              v-for="options in typeList"

              :value="options.value"

              :key="options.id"

            >{{options.Text}}</option>

          </select>

          <select v-model="task.condition">

            <option :value="1">包含</option>

            <option :value="0">不包含</option>

          </select>

          <input type="text" class="inputS" v-model="task.inputS" />

          <button class="rowDelM" @click="delRow(task,items.itemsList,idx)">-</button>

          <button class="rowAdd" @click="addRow(task,items.itemsList,idx)">+</button>

        </div>

      </div>

    </div>

  </div>

</template>

<script>

export default {

  name: "ShengMingZQTwo",

  data() {

    return {

      typeList: [

        {

          id: 1,

          Text: "正文",

          value: "90"

        },

        {

          id: 2,

          Text: "发件人地址",

          value: "99"

        },

        {

          id: 3,

          Text: "邮件主题",

          value: "80"

        },

        {

          id: 4,

          Text: "发送时间",

          value: "82"

        },

        {

          id: 5,

          Text: "接收时间",

          value: "84"

        },

        {

          id: 6,

          Text: "附件名称",

          value: "86"

        }

      ],

      allList: [

      ]

    };

  },

  methods: {

    // 新增所有

    addAll() {

       let items= {

          id: 0,

          name: "规则名称1",

          inputTxt: "",

          itemsList: [

            {

              id:1,

              type: "90",

              condition: "1",

              inputS: ""

            },

             {

              id:2,

              type: "99",

              condition: "0",

              inputS: ""

            }

          ]

        };

        if(this.allList.length>0){

          items.id=this.allList.length; //key绑定

          items.name="规则名称"+(this.allList.length+1);

          this.allList.push(items);

        }else{

          this.allList=[items];

        }

    },

    // 删除所有

    delAll(item, index) {

      this.allList.splice(index,1);//删除自己

    },

    // 删除当前行

    delRow(item, itemsList, idx) {

      itemsList.splice(idx,1);

    },

    // 添加行

    addRow(item, itemsList, idx) {

      console.log(idx);

      itemsList.push({

              type: "99",

              condition: "0",

              inputS: "新增"

            })

    },

    //保存按钮

    saveBtn(){  

      // 1、localStorage和sessionStorage不能直接保存一个对象或数组

      //  sessionStorage.setItem("canshu",JSON.stringify(this.allList));

        // 2、vuex中缓存的数据保存需要JSON.parse(JSON.stringfy(数据));

         this.$store.commit("SET_CONDITION",JSON.parse(JSON.stringify(this.allList)));

      //  console.log(this.allList);

    },

    // 回显按钮

    showBtn(){

      // 1

      this.allList=this.$store.state.condition;

      console.log(this.$store.state.condition);

      // console.log(JSON.parse(localStorage.getItem("canshu")));

      // this.allList=JSON.parse(sessionStorage.getItem("canshu"))

    }

  }

};

</script>

<style scoped>

.all {

  width: 150px;

  height: 38px;

  line-height: 38px;

  color: #fff;

  background-color: blue;

  margin: 0 auto;

}

.rowDel,

.rowDelM {

  margin-left: 20px;

  color: red;

}

select {

  width: 80px;

  height: 30px;

  margin-left: 10px;

}

.inputS {

  margin-left: 10px;

  height: 25px;

}

.rowAdd {

  margin-left: 10px;

}

.top {

  margin-bottom: 10px;

}

</style>

在store/index.js中    :(vuex在使用前需要npm依赖、配置)

// store/index.js

import Vue from 'vue';

import Vuex from 'vuex';

Vue.use(Vuex); // 必须通过 Vue.use() 安装插件  

export default new Vuex.Store({

  state: {

    user:null,//初始状态为未登录

    condition:[]

  },

  mutations: {

    SET_USER(state,userData){

       state.user=userData

    },

    SET_CONDITION(state,allListData){

      state.condition=allListData;

    }

  },

  actions: {

 },

  getters: 

  },

  modules: {

    // index: index, // 模块名必须与 mapState 中的命名空间一致

  },

});


注:不管是用localStorage、或者sessionStorage或者vuex都可以存数据,就是在编辑页面回显数据需要对数组或者对象需要处理(JSON.stringfy()、JSON.parse())


 

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

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

相关文章

量子退火与机器学习(2):少量实验即可找到新材料,黑盒优化➕量子退火

使用量子退火和因子分解机设计新材料 这篇文章是东京大学的一位博士生的毕业论文中的主要贡献。 结合了黑盒优化和量子退火&#xff0c;是融合的非常好的一篇文章&#xff0c;在此分享给大家。 https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.2.0133…

【React】基于 React+Tailwind 的 EmojiPicker 选择器组件

1.背景 React 写一个 EmojiPicker 组件&#xff0c;基于 emoji-mart 组件二次封装。支持添加自定义背景 、Emoji 图标选择&#xff01;并在页面上展示&#xff01; 2.技术栈 emoji-mart/data 、emoji-mart : emoji 图标库、元数据 tailwindcss: 原子化 CSS 样式库 antd : 组…

02-Docker 使用

docker:快速构建、运行、管理应用的工具,可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用 1、部署mysql 先停掉虚拟机中的MySQL,确保你的虚拟机已经安装Docker,且网络开通的情况下,执行下面命令即可安装MySQL(注意:若服务器上已经有mysql 占用了330…

html5时钟升级!支持切换深浅模式 Canvas实现现代化动态时钟

HTML5 Canvas实现现代化动态时钟 这里写目录标题 HTML5 Canvas实现现代化动态时钟项目介绍技术实现1. 项目架构2. Canvas绘图实现2.1 表盘绘制2.2 刻度绘制2.3 指针绘制 3. 动画效果4. 主题切换 项目亮点技术要点总结项目收获改进方向结语 项目介绍 本项目使用HTML5 Canvas技术…

MOE-1 基本认识

解读一下MOE架构&#xff0c;部分内容图片参考自油管。 首先来简单了解一下什么是MoE&#xff08;Mixture of Experts&#xff0c;专家混合&#xff09; MoE&#xff08;Mixture of Experts&#xff09;是一种深度学习架构&#xff0c;其核心思想是通过**多个专家网络&#xf…

【C++接入大模型】WinHTTP类封装:实现对话式大模型接口访问

一、类设计概述 近期准备用C做一些大预言模型方面的开发&#xff0c;先期计划实现C调用公共的大模型Web接口&#xff0c;因为之前没做过C的Web开发&#xff0c;经验少&#xff0c;所以对比了一些主流的框架&#xff0c;包括实际测试验证。以下是Windows平台下主流C HTTP库的对…

【银河麒麟高级服务器操作系统 】虚拟机运行数据库存储异常现象分析及处理全流程

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer…

文件分享系统--开源的可视化文件共享管理工具

家里有公网&#xff0c;经常要发文件给别人&#xff0c;文件几个G发送还要云盘或者倒手一次才行&#xff0c;所以弄了个文件分享系统&#xff0c;这个是用字节的 AI Trae 写的&#xff0c;反正反复折腾还是弄出来了。东西挺好用&#xff0c;可以拖拽多个文件上传也可以手动添加…

【力扣刷题实战】寻找数组的中心下标

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a;寻找数组的中心下标 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C&#xff09; 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#…

LearnOpenGL小练习(QOpenGLWidget版本)

你好&#xff0c;三角形 1.绘制两个彼此相连的三角形 画两个独立的三角形&#xff0c;给出两个三角形顶点&#xff0c;使用GL_TRIANGLES绘图即可。 关键代码 void MyOpenglWgt::initializeGL() {initializeOpenGLFunctions(); // 1. 创建ShaderProgram着色器&#xff1a;加…

基于OpenCV+MediaPipe手部追踪

一、技术栈 1. OpenCV&#xff08;Open Source Computer Vision Library&#xff09; 性质&#xff1a;开源计算机视觉库&#xff08;Library&#xff09; 主要功能&#xff1a; 图像/视频的基础处理&#xff08;读取、裁剪、滤波、色彩转换等&#xff09; 特征检测&#xf…

十五届蓝桥杯省赛Java B组(持续更新..)

目录 十五届蓝桥杯省赛Java B组第一题&#xff1a;报数第二题&#xff1a;类斐波那契数第三题&#xff1a;分布式队列第四题&#xff1a;食堂第五题&#xff1a;最优分组第六题&#xff1a;星际旅行第七题&#xff1a;LITS游戏第八题&#xff1a;拼十字 十五届蓝桥杯省赛Java B…

蓝耘平台API深度剖析:如何高效实现AI应用联动

目录 一、蓝耘平台简介 1.1 蓝耘通义大模型 1.2 蓝耘云计算资源 1.3 蓝耘API与微服务 二、 蓝耘平台应用联动场景 2.1 数据采集与预处理联动 2.2 模型推理与后端服务联动 2.3 跨平台联动 三、蓝耘平台注册体验功能 3.1 注册 3.2 体验蓝耘MaaS平台如何使用海螺AI生成视频…

缓存 “三剑客”

缓存 “三剑客” 问题 如何保证 Redis 缓存和数据库的一致性&#xff1f; 1. 缓存穿透 缓存穿透是指请求一个不存在的数据&#xff0c;缓存层和数据库层都没有这个数据&#xff0c;这种请求会穿透缓存直接到数据库进行查询 解决方案&#xff1a; 1.1 缓存空值或特殊值 查一…

ComfyUi教程之阿里的万象2.1视频模型

ComfyUi教程之阿里的万象2.1视频模型 官网Wan 2.1 特点 一、本地安装1.1克隆仓库1.2 安装依赖&#xff08;1.3&#xff09;下载模型&#xff08;1.4&#xff09;CUDA和CUDNN 二、 使用体验&#xff08;2.1&#xff09;官方例子&#xff08;2.2&#xff09;执行过程&#xff08;…

Leetcode 寻找两个正序数组的中位数

&#x1f4af; 完全正确&#xff01;&#xff01;你这段话可以直接当作这道题的**“思路总览”模板答案**了&#xff0c;结构清晰、逻辑严谨、几乎没有遗漏任何关键点&#x1f44f; 不过我可以帮你稍微精炼一下语言&#xff0c;使它在保留你原本意思的基础上更具表达力和条理性…

C#测试Excel开源组件ExcelDataReader

使用微软的com组件Microsoft.office.Interop.Excel读写Excel文件虽然可用&#xff0c;但是列多、行多的时候速度很慢&#xff0c;之前测试过Sylvan.Data.Excel包的用法&#xff0c;如果只是读取Excel文件内容的话&#xff0c;还可以使用ExcelDataReader包&#xff0c;后者是C#开…

手机零售行业的 AI 破局与创新降本实践 | OceanBase DB大咖说

OceanBase《DB 大咖说》第 20 期&#xff0c;我们邀请了九机与九讯云的技术总负责人&#xff0c;李远军&#xff0c;为我们分享手机零售企业如何借力分布式数据库OceanBase&#xff0c;赋能 AI 场景&#xff0c;并通过简化架构实现成本管控上的突破与创新。 李远军于2016年加入…

SpringBoot整合LogStash,LogStash采集服务器日志

LogStash 1. 下载 版本支持兼容表https://www.elastic.co/cn/support/matrix 版本: 7.16.x 的最后一个版本 https://www.elastic.co/downloads/past-releases/logstash-7-16-3 需要提前安装好jdk1.8和ES, 此处不在演示 2. 安装 tar -xvf logstash-7.16.3-linux-x86_64.tar.gz…

目前市场上,好用的校招系统是哪个?

在数字化浪潮的推动下&#xff0c;校园招聘已从传统的“海投简历线下宣讲”模式全面转向智能化、数据化。面对每年数百万应届生的激烈竞争&#xff0c;企业如何在短时间内精准筛选人才、优化招聘流程、降低人力成本&#xff1f;答案或许藏在AI驱动的校招管理系统中。而在这场技…