vue 上传csv文件

index---------主页面(图1)

form-----------子页面(图2)

index.vue

 /** 重点!!!!

     * 获取表单组件传递的信息,传给后端接口

     * @param {从form表单传递的数据} datas

     * Files_Operation 接口名

     */

    GetCondition(datas) {

      const param = datas;

      this.test = datas.FileUrl; //cs

      //获取表单组件后,判断是新增/修改

      if (this.dialogTitle.search("上传") != -1) {

        //调用新增方法

        const formData = new FormData();

        formData.append("ID", param.ID);

        formData.append("FileName", param.FileName); //视频名称

        formData.append("FileType", param.FileType); //车辆类型

        formData.append("FileUrl", param.FileUrl); //序号

        formData.append("SortID", param.SortID); //序号

        console.log("给接口传参==", formData);

        this.$luleApi.Files_Operation(formData).then((res) => {

          console.log("res==", res);

          if (res.data.code == 200) {

            this.$message({

              message: "上传成功",

              type: "success",

            });

          } else {

            return;

          }

          this.$nextTick(() => {

            this.dialogVisible = false; //弹框关闭

            let param = { EquipmentType: this.EquipmentType };

            this.getTabledata(param); //刷新页面刷新数据

          });

        });

      }

    },

 form.vue 

<template>
  <div class="DictForm">
    <el-form
      ref="newFrom"
      :form="form"
      :model="newFrom"
      :rules="rules"
      label-width="100px"
      style="padding-left: 7px"
    >
      <el-form-item label="装备类型">
        <el-radio-group v-model="newFrom.FileType">
          <el-radio
            label="1"
            v-model="newFrom.EquipmentType"
          >油泵车</el-radio>
          <el-radio
            label="2"
            v-model="newFrom.EquipmentType"
          >电源车</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item
        label="文件名称"
        prop="FileName"
      >
        <el-input
          v-model="newFrom.FileName"
          placeholder="请上传文件"
          readonly
        ></el-input>
      </el-form-item>
      <el-form-item label="上传文件">
        <!-- accept 限制上传类型 -->
        <el-upload
          ref="fileUpload"
          class="upload-demo"
          action=""
          :on-change="handleChange"
          :file-list="fileListUpload"
          accept=".csv,.txt"
          :on-exceed="handleExceedVisio"
          :auto-upload="false"
        >
          <el-button
            size="small"
            type="primary"
          >点击上传</el-button>
        </el-upload>
      </el-form-item>
      <el-form-item
        label="排序"
        prop="SortID"
      >
        <el-input
          v-model="newFrom.SortID"
          type="number"
          min="0"
          placeholder="请输入序号"
          @input="changeInput(newFrom.SortID)"
        ></el-input>
      </el-form-item>
      <el-form-item style="width: 100%;margin:0">
        <div class="footer-btn">

          <el-button @click="onclose()"><el-icon>
              <FolderRemove />
            </el-icon>&ensp; 清 空</el-button>
          <el-button
            type="primary"
            @click="onSubmit('newFrom')"
          ><el-icon>
              <Search />
            </el-icon>&ensp;提 交</el-button>
        </div>

      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  props: ["form", "formID", "partend"],
  data() {
    return {
      fileListUpload: [],
      newFrom: {
        ID: "",
        ParentId: "",
        FileName: "1",
        FileType: "",
        FileUrl: "",
        FullName: "",
        FullPath: "",
        SortID: "",
      },
      rules: {
        FileName: [
          {
            required: true,
            message: "请上传文件",
            trigger: ["blur", "change"],
          },
        ],
        SortID: [
          {
            required: true,
            message: "请输入序号",
            trigger: ["blur", "change"],
          },
        ],
      },
    };
  },
  created() {
    if (JSON.stringify(this.form) == "{}") {
      this.newFrom = {};
    } else {
      this.newFrom = this.form;
    }
  },
  watch: {
    form(newVal, oldVal) {
      if (newVal && newVal.length == 0) {
        this.newFrom = {};
      } else {
        this.newFrom = newVal;
      }
    },

    partend: {
      deep: true,
      immediate: true,
      handler(n, o) {
        this.partendData = n;
      },
    },
  },
  mounted() {},

  methods: {
    //正则表达,判断数字
    changeInput(value) {
      this.newFrom.SortID = value.replace(/^[0]+[0-9]{1,}|[^\d]/g, "");
    },
    //#region 上传文件
    //文件上传成功时的钩子
    onSuccess(response, file, fileList) {
      this.$message.success("上传成功");
      // 处理上传成功后的逻辑,例如更新UI或者处理其他数据
    },
    //文件上传失败时的钩子
    onError(err, file, fileList) {
      console.log(err, file);
      this.$message.error("上传失败");
      // 处理上传失败后的逻辑
    },
    //改变
    handleChange(file, fileLists) {
      this.newFrom.FileUrl = file.raw; //文件流
      if (this.newFrom.FileUrl) {
        if (
          this.newFrom.FileUrl.type == ".csv" ||
          this.newFrom.FileUrl.type == "application/vnd.ms-excel" ||
          this.newFrom.FileUrl.type == "text/plain"
        ) {
          //名称回显
          this.newFrom.FileName = this.newFrom.FileUrl.name.split(".")[0];
        } else {
          this.$message({
            type: "warning",
            message: "附件格式错误,请删除后重新上传!",
          });
        }
      } else {
        this.$message({
          type: "warning",
          message: "请上传附件!",
        });
      }
    },
    //上传限制
    handleExceedVisio() {
      this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传!`);
    },
    //#endregion
    //保存
    onSubmit(newFrom) {
      this.$refs[newFrom].validate((valid) => {
        if (valid) {
          this.$emit("fathernewFrom", this.newFrom); //把this.newFrom指传给父组件
        } else {
          return false;
        }
      });
    },
    //清空
    onclose() {
      (this.newFrom = {
        ID: "",
        ParentId: "",
        FileName: "",
        FileType: "",
        FileUrl: "",
        FullName: "",
        FullPath: "",
        SortID: "",
      }),
        this.$refs.newFrom.resetFields();
      // this.$emit("formClose", false);
    },
  },
};
</script>
<style scoped>
</style>

图1
图2

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java调用http接口的几种方式(HttpURLConnection、OKHttp、HttpClient、RestTemplate)

Java作为后端语言是开发接口实现功能供客户端调用接口&#xff0c;这些客户端中最主要是本项目的前端&#xff1b;但有时候也需要Java请求其他的接口&#xff0c;比如需要长连接转短链接&#xff08;请求百度的一个接口可以实现&#xff09;、获取三方OSS签名、微信小程序签名、…

SpringCloudalibaba之Nacos的配置管理

Nacos的配置管理 放个妹子能增加访问量&#xff1f; 动态配置服务 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态配置消除了配置变更时重新部署应用和服务的需要&#xff0c;让配置管理变得更加高效和敏捷。 配置中心化管…

基于ssm的智慧餐厅点餐管理系统设计与实现(java项目+文档+元)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的智慧餐厅点餐管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 智慧餐厅点餐管理系统设计…

寻找好用项目管理软件?你需要知道的关键信息

项目管理的目标就是确保项目高质量的交付&#xff0c;有了项目管理软件让这一切变得不再是难事。项目管理软件哪家好&#xff1f;好用的项目管理软件是什么样的&#xff1f;1.易于集成现有系统、2.灵活定制、3.性价比高、4.支持任务流程自动化。 一、易于集成——丰富场景 为了…

MGRE环境下运行OSPF

一、分析要求 自行定义公网网段和私有网段&#xff0c;ISP设备仅配置IP地址R1/R4/R5构建Full-Mesh结构R1/R2/R3构建Hub-Spoke结构&#xff0c;R1为NHS除ISP设备&#xff0c;其余路由器运行OSPF 二、实施过程 1. 配置IP及环回地址 R1 [R1]int g 0/0/0 [R1-GigabitEthernet0/…

MuseV:不限视频时长的AI视频生成工具

在不久前 OpenAI Sora 以其优秀且惊人的视频生成效果迅速走红&#xff0c;更是在一众文生视频模型中脱颖而出&#xff0c;成为了文生视频领域的领头羊。 同时它也推动了行业内文生视频技术的发展。今天小编为大家分享一款新开源的文生视频项目MuseV&#xff0c;据说可以生成不…

什么是 MVVM、mvc 模型

mvc模型 MVC: MVC 即 model-view-controller&#xff08;模型-视图-控制器)是项目的一种分层架构思想&#xff0c;它把复杂的业务逻辑&#xff0c; 抽离为职能单一的小模块&#xff0c;每个模块看似相互独立&#xff0c;其实又各自有相互依赖关系。它的好处是&#xff1a;保证了…

笔记83:二叉树前中后序遍历(迭代法 + 栈)

题目1&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目2&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目3&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 注意1&#xff1a;每种遍历方式我都提供了两种方法&#xff0c;带图解的方法为个人尝…

技术周刊的转变:如何平衡热爱与现实?

大家好&#xff0c;我是那个自己打脸自己的猫哥&#xff0c;本来说周刊不做订阅制的&#xff0c;现在却推出了订阅专栏。今天想为自己辩护一下&#xff0c;同时聊聊技术周刊今后的发展计划。 首先回顾一下我过去的想法吧&#xff0c;然后再解释为什么会突然出现转变。 出于对…

Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! Elasticsearch是一个强大的搜索引擎&#xff0c;它提供了丰富的功能来满足复杂的搜索需求。其中&#xff0c;父子索引类型的join功…

伺服系统中电机磁极偏角自学习的实现方案

一、 电机磁极偏角自学习原理简述 要知道磁极偏角&#xff0c;首先要明确的是磁极角&#xff0c;在我个人的理解里磁极角就是park和Ipark变换里所需的电角度&#xff0c;我们的矢量控制方法是定磁链的&#xff0c;就是要保证两相同步旋转坐标系的Id轴和三相静止坐标系的A轴要重…

自定义多数据源

多数据源 第一章 自定义多数据源 文章目录 多数据源前言一、先在配置文件中配置好多个数据源二、配置数据源的配置文件三、定义动态数据源配置1、自定义了Datasource&#xff0c;主要目的是为了在Spring容器中定义一个datasource的Bean&#xff0c;用于mybtais获取数据库连接使…

kali工具----网络映射器(Network Mapper)

识别活跃的主机 尝试渗透测试之前&#xff0c;必须先识别在这个目标网络内活跃的主机。在一个目标网络内&#xff0c;最简单的方法将是执行ping命令。当然&#xff0c;它可能被一个主机拒绝&#xff0c;也可能被接收。本节将介绍使用Nmap工具识别活跃的主机。 1、网络映射器工具…

【迅为iTOP-4412-linux 系统制作(4)】ADB 或者 TF 卡烧写测试

准备工作 编译生成的内核镜像uImage 和设备树 dtb 文件“exynos4412-itop-elite.dtb”已经可以使用了。 把编译生成的uimage和dtb文件。拷贝fastboot工具。官方的u-boot-iTOP-4412.bin 也拷贝到 platform-tools 文件夹目录内。system.img 也拷贝到 platform-tools 文件夹目录…

【Java EE】 IoC详解(Bean的存储)

文章目录 &#x1f38d;Controller&#xff08;控制器存储&#xff09;&#x1f338;如何从Spring容器中获取对象&#xff08;ApplicationContext&#xff09;&#x1f338;获取bean对象的其他方式&#xff08;BeanFactory&#xff09;&#x1f338;Bean 命名约定&#x1f338;…

[ROS 系列学习教程] 建模与仿真 - Gazebo 与 URDF 建模介绍

ROS 系列学习教程(总目录) 本文目录 一、Gazebo 介绍二、URDF 建模介绍2.1 一个简单的实体2.2 rivz显示URDF模型2.3 保存与加载rviz配置2.4 launch文件快速启动2.5 package结构 由于种种原因&#xff0c;有时我们不能直接使用真实的机器人进行调试&#xff0c;这时就需要对机器…

Tomcat源码解析——源码环境搭建

一、源码下载 在进行源码阅读前&#xff0c;先下载源码包&#xff0c;这样便于做笔记和debug。 我所用的版本是Tomcat7.0.68&#xff0c; Tomcat7.0.68下载地址&#xff1a;Index of /dist/tomcat/tomcat-7/v7.0.68/src 所有Tomcat的源码包下载地址&#xff1a;Index of /dist/…

【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.哈希概念2.哈希冲突…

每日一题(力扣)---从中序与后序遍历序列构造二叉树

思路 根据中序遍历和后序遍历的特性可知&#xff0c;后序遍历的最后一个元素为根元素。然后找到中序遍历中对应的序号。将中序遍历的划分为两部分&#xff0c;左边为左子树&#xff0c;右边为右子树。 方法 由思路可知&#xff0c;可以使用递归。递归函数的入口为划分的区间…

day57 判断子序列 不同的子序列 两个字符串的删除操作 编辑距离

题目1 392 判读子序列 题目链接 392 判断子序列 题意 判断字符串s是否为字符串t的子序列 &#xff08;子序列的相对位置在原字符串中不改变&#xff09; 就是求最长公共子序列的长度与字符串s的长度是否相等 动态规划 1&#xff09;确定dp数组及下标i的含义 dp[i][j]…