input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传

这篇具有很好参考价值的文章主要介绍了input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一个input标签效果

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传,# css,vue.js,elementui,javascript

第二个input标签的效果

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传,# css,vue.js,elementui,javascript

el-table的改造效果

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传,# css,vue.js,elementui,javascript

<template>
  <div class="outerBox">
    <div class="analyze" v-if="status">
      <div class="unFile">
        <div class="mainBox">
          // <img class="picture" src="../../static/images/upload.png" />
          <div class="title">上传.log文件进行解析</div>
          <div class="clickBtn">
            <div class='notisfyWord'>上传内容</div>
            <input
            type="file"
            id="fileInput"
            @change="handleFileChange"
            accept=".log"
            style="width:100%;height:100%;cursor: pointer;opacity:0"
          /></div>
        </div>
      </div>
    </div>
    <div class="fileBox" v-if="!status">
      <div class="upload">
        <div>上传.log文件进行解析
          <input
            type="file"
            id="fileInput"
            @change="handleFileChange"
            accept=".log"
            style="width:100%;height:100%;opacity:0;cursor:pointer;position:absolute;top:0;left:0;"
          />
        </div>
        <div class="fileName">{{ fileName }}</div>
      </div>

      <div class="tableStyle">
        <el-table
          :data="tableData"
          height="70vh"
          style="width: 100%"
          :header-row-style="{
            color: 'white',
          }"
          :row-style="{
            color: 'white',
          }"
          :cell-style="{
            textAlign: 'center',
            border: '1px solid #0a1641',
          }"
          :header-cell-style="{
            textAlign: 'center',
            background: '#222d54',
            border: '1px solid #222d54',
          }"
          :row-class-name="tableRowClassName"
          v-loading="loading"
        >
          <el-table-column prop="sourceTime" label="时间" width="180">
          </el-table-column>
          <el-table-column prop="item" label="事项" width="150">
          </el-table-column>
          <!-- <el-table-column prop="msg" label="描述"> </el-table-column> -->
          <el-table-column prop="source" label="来源" width="100">
          </el-table-column>
          <el-table-column prop="subsystem" label="子系统"> </el-table-column>
          <el-table-column prop="level" label="严重等级"> </el-table-column>
          <el-table-column prop="value" label="值"> </el-table-column>
        </el-table>
        <!-- <el-pagination
          class="pagination"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page.sync="currentPage1"
          :page-size="100"
          layout="total, prev, pager, next"
          :total="1000"
        >
        </el-pagination> -->
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: true,
      tableData: [],
      fileName: "",
      status: true,
      tableTotal:'',
      pageSize:100,
      midTableData: [],
      test:[
        {item:'qqqqq',unusual:'1'},
        {item:'qqqqq',unusual:'0'},
        {item:'qqqqq',unusual:'0'},
        {item:'qqqqq',unusual:'1'},
      ]
    };
  },
  mounted() {
    this.tableRowClassName;
  },
  methods: {
    clickBtn() {
      document.getElementById("fileInput").click();
    },
    handleFileChange(event) {
      const file = event.target.files[0];
      const fileType = file.name.split('.').pop();
      //if(fileType != 'log'){
       // this.$message.error('请上传.log文件');
       // return
     // }
     // if(file.size >  50 * 1024){
     //   this.$message.error('最小上传文件大小为50k');
      //  return
     // }
      this.fileName = file.name;
      this.status = false;
      // 模拟异步
      setTimeout(()=>{
        this.loading = false
        this.tableData = this.test;
      },2000)
    },
    tableRowClassName({ row, rowIndex }) {
      if (row.unusual === '0') {
        return "selected-row";
      } else {
        return "selected-rows";
      }
    },
    handleCurrentChange(val) {
      const start = val * 100
      const end = (val + 1) * 100
    },
  },
};
</script>

<style scoped>
::v-deep .selected-row {
  background-color: #e4d33d !important;
}
::v-deep .selected-rows {
  background-color: #0a1641 !important;
}
.outerBox {
  background: linear-gradient(180deg, #eaf4ff 0%, #042f61 100%);
}
.analyze {
  width: 100%;
  height: 100%;
  padding: 0 !important;
  display: flex;
  justify-content: center;
}

.upload {
  margin-top: 10px;
  line-height: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  font-size: 15px;
  background-color: #045fcb;
  border-radius: 7px;
  margin-bottom: 10px;
  position: relative;
  cursor: pointer;
}

.selected-row {
  background-color: #e4d33d !important;
}

.tableStyle {
  width: 100%;
  /* background-color: #094b97; */
}

.el-button {
  color: white !important;
  background: linear-gradient(180deg, #82dde1 0%, #4bb8c0 100%) !important;
}

.exportBtn {
  position: absolute;
  right: 10px;
  bottom: 10px;
}

.unFile {
  width: 50%;
  height: 40%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 15%;
  background-color: #094b97;
  border-radius: 10px;
  border: 3px dashed #d4e1f3;
  overflow: hidden;
}

.picture {
  width: 150px;
}

.mainBox {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.title {
  color: white;
  font-size: 15px;
  display: flex;
  justify-content: center;
}

.clickBtn {
  overflow: hidden;
  opacity:1;
  color: white;
  border-radius: 5px;
  background-color: #2188ff;
  width:150px;
  height:50px;
  font-size: 15px;
  cursor: pointer;
  position: relative;
}
.notisfyWord{
  cursor: pointer;
  position: absolute;
  left:50%;
  top:50%;
  transform: translate(-50%,-50%);
}
.fileBox {
  background-color: #0a1642;
  padding: 10px;
}
.fileName {
  margin-left: 10px;
}
.pagination {
  display: flex;
  justify-content: right;
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
  color: black !important;
  background-color: #0460cb !important;
}

::v-deep .el-table__empty-text {
  color: white !important;
}
::v-deep .el-table__body-wrapper {
  background-color: #0a1641 !important;
}
::v-deep .el-table::before {
  background-color: #0a1642;
}
::v-deep .el-table .el-table__cell.gutter {
  background-color: #0a1642;
}
</style>

3、input本身支持拖拽上传但要设置opcity为0,不能设置diaplay:none或者visiables

  如果不使用拖拽上传的话,只点击上传可使用如下

          <div
            class="clickBtn"
            @click="clickBtn"
          >
            上传内容
          </div>
          <input
            type="file"
            id="fileInput"
            @change="handleFileChange"
            style="display: none"
          />

    clickBtn(){
      console.log("clickFackBtn");
      document.getElementById('fileInput').click()
    },

    handleFileChange(event) {
      const file = event.target.files[0];
      console.log(file);
    },

input同时也支持多选文件上传<input mutilple/>

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传,# css,vue.js,elementui,javascript

4、表格效果

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传,# css,vue.js,elementui,javascript

只设置一小框的样式文章来源地址https://www.toymoban.com/news/detail-733762.html

      <el-table
        :data="tableData"
        height="calc(100vh - 230px)"
        style="width: 100%"
        :header-row-style="{}"
        :row-style="{}"
        :header-cell-style="{
          textAlign: 'center',
          color: 'white',
        }"
        v-loading="loading"
        :cell-style="cellStyle"
      >
        <el-table-column prop="siteRange" label="站点名称" width="240">
        </el-table-column>
        <el-table-column prop="carName" label="车号"> </el-table-column>
        <el-table-column prop="troubleType" label="告警类型" width="130">
        </el-table-column>
        <el-table-column prop="troubleLevel" label="严重等级">
        </el-table-column>
      </el-table>
  methods: {
    cellStyle({ row, column }) {
      if (
        column.property === "troubleLevel" &&
        row.troubleLevel == "三级告警"
      ) {
        return {
          color: "#F6BD16", // 设置字体颜色
          textAlign: "center",
        };
      } else if (
        column.property === "troubleLevel" &&
        row.troubleLevel == "二级告警"
      ) {
        return {
          color: "#FF9D4D",
          textAlign: "center",
        };
      } else if (
        column.property === "troubleLevel" &&
        row.troubleLevel == "一级告警"
      ) {
        return {
          color: "#F6BD16",
          textAlign: "center",
        };
      } else {
        return {
          color: "white",
          textAlign: "center",
        };
      }
    },
  },

到了这里,关于input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-table中的el-input标签修改值,但界面未更新,解决方法

    在el-table中的el-input里面写的change事件根本不触发,都不打印,试了网络上各种方法都没用 然后换成input事件,input事件会触发,但界面也未更新。我在触发事件的时候,生成一个值,用于刷新界面再绑定到el-table上,但会导致界面强制刷新,体验感很差, 解决 把生成的key值绑

    2024年02月06日
    浏览(53)
  • vue + el-table点击表头改变其当前样式

    废话不多说,先看效果: 网上找了一大圈没有符合的,只能自己看着搞: 直接贴代码: 这种写法经使用过程中发现问题,故修改为以下:

    2024年02月13日
    浏览(31)
  • element-plus el-table、动态添加、删除行、input输入框

    模板部分,使用 el-table 元素作为表格容器,绑定 data 属性传入表格数据。用 v-for 指令遍历每一项数据,使用普通文本或 el-input 组件渲染每个单元格。表格最后一列为操作列,包含 “Add” 和 “Delete” 两个按钮,点击它们可以增加或删除数据行: 逻辑部分,定义 tableData 数据

    2024年02月06日
    浏览(32)
  • [element-ui] el-table点击高亮当前行

    1、highlight-current-row 2、:row-class-name=“tableRowClassName”,需要借助@row-click=\\\"handleRowClick\\\"获取当前点击行的下标 参考: elementUI中table点击高亮当前行的两种方式

    2024年03月21日
    浏览(39)
  • element ui - el-table给单元格添加点击事件

    el-table中,点击版本号触发查看配置功能,但是产品想将热区扩大,从点击版本号扩大到点击整个单元格都可以查看。 在 el-table-column 中的 template 标签里,添加一个 div元素 包裹版本号和el-tag,将点击事件绑定在div元素上 :

    2024年02月12日
    浏览(30)
  • el-table【合并行】+【筛选功能】+【配置列】+【点击跳转】功能

    效果图:   1. 【合并行】 通过给 table 传入 span-method 方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行 row 、当前列 column 、当前行号 rowIndex 、当前列号 columnIndex 四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表 rowspan ,第二个元素代

    2024年02月16日
    浏览(27)
  • element-plus el-table 点击单行修改背景色

    element-plus + el-table 点击行选中并修改背景色+文字颜色 方法一: 重点: highlight-current-row element-plus 本身有给提供这个功能,而且比第二个方法更好用,第二个方法在有列固定的情况下,样式会不生效,所以建议直接用第一种 方法二: 重点: @row-click :row-style

    2024年02月15日
    浏览(28)
  • vue2&vue3 el-table实现整行拖拽排序功能(使用sortablejs插件)

    Vue3组件地址 Vue2组件地址 Vue2基于ElementUi再次封装基础组件文档 vue3+ts基于Element-plus再次封装基础组件文档

    2024年02月08日
    浏览(41)
  • 随手记:使用sortable.js 实现element-ui el-table 表格上下拖拽排序

    需求场景: 表格可以实现上下拖拽row实现新排序 首先,安装sortable.js  引入表格排  全局挂在组件 使用页面引入 使用sortable.js表格一定要有唯一的row-key,一般绑定的是id,不然拖拽会不生效 data声明 sortableContainer: null,为的是后面如果有需要可以做销毁操作   因为我这里是表

    2024年02月22日
    浏览(39)
  • el-table中点击跳转到详情页的两种方法

    跳转的两种写法: 1.使用keep-alive使组件缓存,防止刷新时参数丢失 keep-alive 组件用于缓存和保持组件的状态,而不是路由参数。它可以在组件切换时保留组件的状态,从而避免重新渲染和加载数据。 keep-alive 主要用于提高页面性能和用户体验,而不涉及路由参数的传递和保留。

    2024年02月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包