el-upload 上传附件

news2024/7/6 18:54:10

案例:

<template>
  <div>
    <el-drawer
      title="附件信息"
      v-model="drawer"
      direction="rtl"
      :before-close="handleClose"
      size="35%"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
    >

      <div>
        <!-- 按钮 -->
        <!-- 上传文件 -->
        <el-card>
          <!--  :file-list="files" 文件 -->
          <el-upload
            drag
            class="upload-demo"
            ref="upload"
            action="#"
            :on-change="ChangeImage"
            :file-list="files"
            :auto-upload="false"
            :show-file-list="true"
          >
            <i class="el-icon-upload"></i>
            <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
          </el-upload>
        </el-card>
        <el-button
          style="margin-left: 10px;"
          type="success"
          @click="UpdateFilesData"
        >上传到服务器</el-button>
        <el-button
          class="cummon_buttonStyle"
          type="primary"
          icon="edit"
          @click="delData"
        >删除附件</el-button>
        <el-button
          class="cummon_buttonStyle"
          type="primary"
          icon="delete"
          @click="DownLoadFile"
        >下载附件</el-button>
        <cummonTable
          v-loading="loading"
          :columns="columns"
          :pagination="pagination"
          @rowClick="rowClick"
          @rowDoubleClick="rowDoubleClick"
          @handleSelectionChange="GethandleSelectionChange"
          @getPage="GetPage"
          ref="cummonTableByZiInfo"
        />
      </div>

    </el-drawer>
  </div>
</template>

<script>
import cummonTable from "@/components/zaojia/tableCommon/cummonTable.vue";
export default {
  //组件名称
  name: "",
  //import引入的组件需要注入到对象中才能使用
  components: {
    cummonTable,
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {},
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {},
  data() {
    return {
      drawer: false,
      // 传给子组件
      columns: {
        getHeight: 565, //565
        isSelect: false,
        showFenYe: false, // 是否分页
        isSelection: false, //是否显示多选
        isTag: false,
        defaultall: false,
        highlightCurrent: true,
      },
      pagination: {
        total: null,
      },
      //#region 页码
      page: {
        pageNum: 1, //当前页
        pageSize: 10, //当前页的条数
      },
      //#endregion
      // 查询条件
      QueryJson: {},
      QueryJson1: "",
      //双击的ID
      Eid: "",
      // 折叠面板
      activeNames: ["1"], // 默认展开第一
      // form表单数据
      formInline: {},
      optionsUser: [], //操作人
      btnData: null, //调按钮接口传的参数
      //行点击的rowID
      rowID: null,
      row: null,
      files: [],
      formData: null, //附件上传FormData
    };
  },
  //方法集合
  methods: {
    //文件上传通用
    FilesUpdate() {
      let _this = this;
      this.formData.append("DataID", this.Eid); //属于哪条主表数据
      this.formData.append("MenuID", localStorage.getItem("MenuID")); //属于哪个菜单下
      _this.$EquiApi.UploadFile(this.formData).then((res) => {
        if (res.data.code == 200) {
          this.Refresh(res);
        }
      });
    },
    //添加图片
    ChangeImage(file, filelist) {
      this.files = filelist;
    },
    //附件上传
    UpdateFilesData() {
      this.formData = new FormData();
      this.files.forEach((item) => {
        if (!(!item.raw && item.url.indexOf("blob") === -1)) {
          this.formData.append("files", item.raw);
        }
      });
      this.formData.append("FileType", 1); //属于第几个附件上传控件
      this.FilesUpdate();
    },
    // 渲染表头信息
    GetColDataList() {
      let res2 = [
        {
          label: "文件原名称",
          prop: "FileName",
        },
        {
          label: "文件路径",
          prop: "FilePath",
        },
        {
          label: "文件新名称",
          prop: "NewFileName",
          direction: "center",
        },
        {
          label: "上传人",
          prop: "CreateUserName",
          direction: "center",
        },
        {
          label: "上传时间",
          prop: "CreateTime",
          direction: "center",
        },
      ];
      this.$refs.cummonTableByZiInfo.SetDataTableHeader(res2);
    },

    //点击下载附件按钮
    DownLoadFile() {
      if (this.row) {
        //调接口
        let _this = this;
        //调接口
        let param = {
          FileID: this.row.ID.toString(),
        };
        _this.$EquiApi.DownLoadFile(param).then((res) => {
          if (res.data.code == 200) {
            window.open("http://" + res.data.data.URL, "_blank");
            //刷新
            this.Refresh(res);
          }
        });
      } else {
        this.$message({
          showClose: true,
          message: "您没有选中任何数据项,请选择后在操作",
          type: "warning",
        });
      }
    },
    //点击删除按钮
    delData() {
      if (this.row) {
        // let IDs = []
        // this.multipleSelection.forEach(element => {
        //   IDs.push(element.ID)
        // });

        //调接口
        let _this = this;
        //调接口
        let param = {
          FileID: this.row.ID.toString(),
        };
        _this.$EquiApi.DelFile(param).then((res) => {
          if (res.data.code == 200) {
            //刷新
            this.Refresh(res);
          }
        });
      } else {
        this.$message({
          showClose: true,
          message: "您没有选中任何数据项,请选择后在操作",
          type: "warning",
        });
      }
    },

    //行点击
    rowClick(val) {
      this.rowID = val.ID;
      this.row = val;
    },
    //行双击
    rowDoubleClick() {},

    /**
     * GethandleSelectionChange:获取子组件(table)传过来勾选的数组
     * value:值
     */
    GethandleSelectionChange(value) {
      this.multipleSelection = value;
    },

    //获取参数数据
    GetPage(val) {
      this.page.pageNum = val.data.pageNum;
      this.page.pageSize = val.data.pageSize;
      let JsonParam = {
        DataID: this.Eid,
        MenuID: localStorage.getItem("MenuID"),
      };
      this.QueryJson1 = JSON.stringify(JsonParam);
      let param = {
        Page: this.page.pageNum, //页码
        Rows: this.page.pageSize, //条数
        QueryJson: this.QueryJson1, //查询条件
      };
      this.init(param);
      this.getBtn();
    },

    //获取按钮并展示
    getBtn() {
      const param = {
        MenuID:
          localStorage.getItem("MenuIds") == "undefined"
            ? 0
            : localStorage.getItem("MenuIds"),
        RoleID:
          localStorage.getItem("RoleID") == "undefined"
            ? 0
            : localStorage.getItem("RoleID"),
      };
      this.$GetButtonByRoleAndMenus(param, this);
    },

    /**
     * @init:初始化数据
     */
    init(param) {
      let _this = this;
      _this.GetColDataList(); //1.初始化表头

      _this.$EquiApi.GetFile(param).then((res) => {
        if (res.data.code == 200) {
          this.loading = false;
          _this.pagination.total = res.data.data.total;

          let tempTabledata = JSON.parse(res.data.data.rows);
          _this.tabledata = tempTabledata.map(function (i, index, arr) {
            if (i.CreateTime != null) {
              let temp = i.CreateTime.split(" "); //分隔
              i.CreateTime = temp[0];
            }
            if (i.ModifyTime != null) {
              let temp2 = i.ModifyTime.split(" "); //分隔
              i.ModifyTime = temp2[0];
            }
            if (i.InstallationDate != null) {
              let temp3 = i.InstallationDate.split(" "); //分隔
              i.InstallationDate = temp3[0];
            }
            return i;
          });
          _this.$refs.cummonTableByZiInfo
            ? (_this.$refs.cummonTableByZiInfo.loading = false)
            : "";
          _this.$refs.cummonTableByZiInfo.SettableData(_this.tabledata);
        }
      });
    },

    //刷新
    Refresh(res) {
      this.$message({
        showClose: true,
        message: res.data.msg,
        type: "success",
      });

      this.RefreshData(res);
    },
    //提供给外部进行刷新
    RefreshData() {
      let JsonParam = {
        DataID: this.Eid,
        MenuID: localStorage.getItem("MenuID"),
      };
      this.QueryJson1 = JSON.stringify(JsonParam);

      this.files = [];
      this.formData = [];

      let params = {
        Page: this.page.pageNum,
        Rows: this.page.pageSize, //条数
        QueryJson: this.QueryJson1, //查询条件
        Eid: this.Eid, //父级关联
      };
      this.init(params);
    },
  },
  //监听属性 类似于data概念
  computed: {},

  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  beforeDestroy() {}, //生命周期 - 销毁之前
  destroyed() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>

<style scoped>
.subjectManageIndex ::v-deep .el-card__header {
  padding: 0.5rem;
}
</style>
<style lang="scss" scoped>
@import "@/assets/css/Drawer.css";
.Query span {
  margin-left: 20px;
}

.subjectManageIndex {
  .box-card {
    width: 100%;
  }

  .lineStyle {
    width: 3px;
    height: 19px;
    background: #239ee6;
    float: left;
    margin-right: 0.5%;
  }
}

::v-deep.el-drawer__wrapper {
  z-index: -3000 !important;
}

::v-deep.el-drawer {
  position: relative;
  left: 1100px;
  top: 154px;
  padding: 0;
  width: 28.125vw !important;
  height: 28.385vw;
  background: rgba(7, 18, 26, 0.8);
  font-size: 16px;
}

::v-deep.el-drawer__header {
  padding: 0 !important;
  width: 520px !important;
  height: 30px;
  margin: 12px;
  font-size: 16px;
  color: #ffffff;
  background: rgba(19, 32, 42, 0.5) !important;
}

::v-deep.el-drawer__body {
  margin: 0px 10px 10px 10px;
  background: rgba(19, 32, 42, 0.5) !important;
  padding: 0;
  width: 520px !important;
  height: 340px;
  position: relative;
}

.cummon_buttonStyle {
  /* background: linear-gradient(#0165eb, #018ff2, #00b7f9); */
  background: #5d6c8c;
  border: none;
  color: #f3f3f3;
}
</style>

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

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

相关文章

2. 配置版本

2.1 安装 Python 版本 ① 首先打开 Anaconda 的 Prompt 终端&#xff0c;输入 jupyter kernelspec list&#xff0c;查看已经安装的 python 版本。如下图所示&#xff0c;只有 Anaconda 自带的 python3。 ② 输入 conda create --name py3.6.3 python3.6.3 命令&#xff0c;输…

rman备份数据文件和归档指定不同的filesperset

客户说带库上抓小文件会导致带库紧张。 大部分的备份软件都会用filesperset参数来做备份&#xff0c;这样恢复速度快&#xff0c;而且也有利于带库重复删除。 客户用的plus archivelog的形式&#xff0c;一条命令的做全备&#xff0c;现在就有filesperset不区分dbf和arc的情况…

Java之API详解之Objects类的详细解析

5 Objects类 5.1 概述 tips&#xff1a;了解内容 查看API文档&#xff0c;我们可以看到API文档中关于Objects类的定义如下&#xff1a; Objects类所在包是在java.util包下&#xff0c;因此在使用的时候需要进行导包。并且Objects类是被final修饰的&#xff0c;因此该类不能被继…

跨境电商独立站如何实现全球开店,获得更多流量?

对于独立站卖家来说&#xff0c;针对一个国家搭建一个站点、运营&#xff0c;就已经要花上不少力气了。更别说想要在多个市场售卖了&#xff0c;每个国家不同的货币、语言、定价、付款方式等等就已经够让人头大。 研究显示&#xff0c;40%的人不会从其他语言的网站上购买产品。…

Windows系统配置jar包自启动

目录 一、下载 WinSW.NET4.exe二、创建windows的目录结构三、编写xml配置文件四、检查环境4.1 是否安装jdk4.2 是否存在.net framework4的服务 五、安装 一、下载 WinSW.NET4.exe https://github.com/winsw/winsw/releases 下载完毕改名为jar名&#xff0c;也就是 项目.exe64位…

QT使用QImage做图片切割

#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFileDialog> #include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);// 选择本地图片文件QString …

了解java中的通配符“?“

目录 通配符的作用 先看一段代码 用通配符"?"后,代码变化 结论 通配符上界 通配符下界 对通配符上下界的注释理解及其练习代码 简记: ? 用于在泛型的使用&#xff0c;即为通配符. 在Java中&#xff0c;通配符&#xff08;wildcard&#xff09;主要用于泛型…

11.物联网lwip,网卡原理

一。LWIP协议栈内存管理 1.LWIP内存管理方案 &#xff08;1&#xff09;堆heap 1.灰色为已使用内存 2.黑色为未使用内存 3.紫色为使用后内存 按照某种算法&#xff0c;把数据放在内存块中 &#xff08;2&#xff09;池pool 设置内存池&#xff0c;设置成大小相同的内存块。 2…

想报考pmp,一定得经过培训机构吗?

想要申请PMP考试&#xff0c;必须具备35个学时的PMBOK项目管理学习或培训经验。这是报考的首要条件。 所有符合条件的机构必须具备“PMI”和“中国国际基金会人才交流中心”的授权资质之一即可 首先&#xff0c;在进行英文报名时&#xff0c;需要提供并填写35学时的培训经历。…

WordPress(2)主题安装-菜单-菜单图标

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、上传你的主题文件启用我的是 LoliMeow二、主题设置1.小工具中设置即可在网站右侧显示2.在文章中新建分类用做菜单3.也可在文字的前面添加图标[图标库](http://fa.fangguokeji.cn/)前言 提…

Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 在看这篇帖子前&#xff0c;请先看我的另一篇帖子《Visual Studio 2022的MFC框架——应用程序向导》。 当程序调用了CWinApp类的构造…

shell常用脚本

1、Java项目重启脚本 #!/bin/bash# 定义一个函数来结束进程和启动新进程 function restart(){JAR_NAME$1 # jar包LOG_NAME$2 # 日志JVM_ARGS$3 # jvm 参数PID$(ps -ef | grep java | grep ${JAR_NAME} | awk { print $2 })if [[ ! -z "$PID" ]]; thenecho "…

LeetCode(力扣)700. 二叉搜索树中的搜索Python

LeetCode20. 有效的括号 题目链接代码 题目链接 https://leetcode.cn/problems/search-in-a-binary-search-tree/ 代码 递归法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val #…

进度猫:如何做好项目进度管理?有几点建议

项目目进度管理是在项目实施过程中&#xff0c;对各阶段的进展和项目最终完成的期限进行的管理。目的是保证项目能在满足其时间的约束条件的前提下实现项目的总体目标。 因此为了保证项目能够按时完成&#xff0c;需要制订详尽的可操作性的项目进度管理计划&#xff0c;才可以…

MySQL数据库备份及恢复

数据备份的重要性 1、备份的主要目的是灾难恢复 2、在生产环境中&#xff0c;数据的安全性至关重要 3、任何数据的丢失都可能产生严重的后果 4、造成数据丢失的原因 备份类型(重点) 1、物理备份 数据库备份可以分为物理备份和逻辑备份。物理备份是对数据库操作系统的物…

【App端】uni-app使用百度地图api和echarts省市地图下钻

目录 前言方案一&#xff1a;echarts百度地图获取百度地图AK安装echarts和引入百度地图api完整使用代码 方案二&#xff1a;echarts地图和柱状图变形动画实现思路完整使用代码 方案三&#xff1a;中国地图和各省市地图下钻实现思路完整使用代码 前言 近期的app项目中想加一个功…

QGIS-计算几何内部点(一定在几何内)

在提取几何图像的中心点相关的X Y时&#xff0c;我们往往希望提取的点在几何内部&#xff0c;因为对于不规则图形而言&#xff0c;特别是凹几何&#xff0c;提取的点可能在图形外&#xff0c;QGIS中提供了相关的函数用于提取点中心点&#xff1a; 打开图形的属性列表&#xff…

Springboot2.0 上传图片 jar包导出启动(第二章)

目录 一&#xff0c;目录文件结构讲解二&#xff0c;文件上传实战三&#xff0c;jar包方式运行web项目的文件上传和访问处理&#xff08;核心知识&#xff09;最后 一&#xff0c;目录文件结构讲解 简介&#xff1a;讲解SpringBoot目录文件结构和官方推荐的目录规范 1、目录讲解…

行业毒瘤还是长久需求?无代码编程会是趋势吗?

无代码和低代码都是这几年才诞生、但受到不少关注的新名词。无代码和低代码的发展前景如何&#xff1f;是一时兴起还是长久需求&#xff0c;是不是行业毒瘤&#xff0c;种种讨论络绎不绝。 无代码开发平台&#xff08;NCDP&#xff0c;No Code Development Platform&#xff09…

Java从入门到精通(五)· 内部类,枚举,泛型

Java从入门到精通&#xff08;五&#xff09; 内部类&#xff0c;枚举&#xff0c;泛型 一 内部类 1.概述 简单来说&#xff0c;如果一个类定义在另一个类的内部&#xff0c;这个类就是内部类。 使用场景&#xff1a;当一个类的内部&#xff0c;包含了一个完整的事务&#…