这个看过吗

el-upload调两个接口,获取二进制文件 ,并且上传后不立即执行,通过      this.$refs.upload.submit();触发提交,直接调两个接口,获取到二进制文件后传输

 

 <el-upload
          :auto-upload="false"
          :data="{
            reportQuarter: reportQuarter,
            reportYear: !reportYear.includes('年') ? reportYear + '年' : ''
          }"
          class="upload"
          action="/cbrc/api/getWordContent"
          :on-success="upsuccess"
          :headers="header"
          :on-remove="deletefile"
          :before-upload="handleChange"
          :file-list="fileList"
          :limit="1"
          accept=".doc,.docx"
          ref="upload"
        >
          <el-button type="primary" class="blue" style="float: left;"
            >上传报告<i class="el-icon-upload el-icon--right"></i
          ></el-button>
          <!-- 只可上传一个文件,上传成功点击识别后会覆盖原数据 -->
          <div class="upload__tip">
            备注:请先上传声誉风险排查报告,系统可自动识别部分内容
          </div>
        </el-upload>

















upsuccess(file) {
    

        // 使用FormData传参数和文件
        var form = new FormData();
        // 文件转成后端要的二进制格式
        form.append("file", this.file);
      this.$message.success("导入成功");
        this.$http({
        method: "POST",
        url: "/cbrc/file/upload",
       
        data:form
      }).then(res => {
        if (res) {
//成功
          this.filePath=res.data.data.attachPath;
        }
      });
    },
  //上传之前事件
    handleChange(file, fileList) {
 //获取二进制文件并赋值
      this.file=file;
      //限制文件大小
      var size = file.size / 1024 / 1024;
      if (size > 10) {
        this.$message.warning("上传文件大小不能大于10M");
        return false;
      }
    }

一个属性让你的div可编辑

contenteditable="true"

<div id="add-content" contenteditable="true">这里可以编辑</div>

elementUI的tab切换结合锚点使用

    <el-tabs v-model="activeItemId" @tab-click="handleClick">
          <!-- v-for="item of departmentList"
            :key="item.name"
            :label="item.name"
            :name="item.id + ''" -->
          <el-tab-pane
            v-for="(item, index) of reportList"
            :key="item.propertyName + index"
            :label="item.propertyName"
            :name="index + ''"
          >
          </el-tab-pane>
        </el-tabs>
        <div
          v-for="(item, i) of reportList"
          :key="item.propertyName"
          style="background-color: #fff;padding:10px;padding-bottom: 25px;"
        >
          
              <h3 :id="'anchor-' + i">{{ item.propertyName }}</h3></div>






  handleClick(tab, event) {
      this.$nextTick(function() {
        var anchor = this.$el.querySelector("#anchor-" + this.activeItemId);
       document.body.scrollTop = anchor.offsetTop; // chrome
  document.documentElement.scrollTop = anchor.offsetTop; // firefox
        console.log("this.activeItemId :>> ", anchor);
      });

      //获取列表
      console.log(tab, event);
    },

vue2的页面路由守卫阻止浏览器页面关闭

js阻止浏览器页面关闭

js守卫阻止浏览器页面点击标签后关闭

禁止用户关闭页面

阻止不了,浏览器内点击标签页关闭按钮或ctrl+w关闭,根本没法做,你可以阻止页面回退,但没法阻止用户直接关闭当前标签页,想要做到用户点击关闭提醒用户是否保存后再关毕页面这种效果,就跟手机壳要根据使用者现在的心情即时变色一样难。我们只能在用户点击每一项的编辑后给她来个保存按钮,即点击每一项都可以保存,但这个时候不关闭页面,如果不点击单个保存按钮而直接点击页面下方的保存按钮,保存所有数据并关闭页面

下方代码可阻止回退 


  beforeRouteLeave(to, from, next) {
    console.log("1 :>> ", 1);

    if (
      (this.pageStatus === "add" || this.pageStatus === "copy") &&
      !this.setOver
    ) {
      this.$confirm("是否保存后再关闭", {
        confirmButtonText: "确定",
        cancelButtonText: "直接关闭"
      })
        .then(() => {
          this.setDetailOrAdd();
        })
        .catch(() => {
          next();
        });
    } else {
      let status = false;
      if (!this.setOver) {
        if (this.originReportInfo.title !== this.outerInfo.title) {
          status = true;
        }
        this.reportList.forEach((item, index) => {
          if (
            item.propertyValue !==
            this.originReportInfo.reportList[index].propertyValue
          ) {
            status = true;
          }
        });
        if (status) {
          this.$confirm("是否保存后再关闭", {
            confirmButtonText: "确定",
            cancelButtonText: "直接关闭"
          })
            .then(() => {
              this.setDetailOrAdd();
            })
            .catch(() => {
              next();
            });
        }
      }
    }
  },

需求实现,局部全选与总选进行二级联动,每次点击都做判断,回显或新建正常展示

 <div class="item" style="height:auto;">
              <label class="titleLabel"
                >可见范围<span class="popRed">*</span></label
              >
              <div style="width:80%">
                <input
                  type="checkbox"
                  class="check"
                  v-model="editList.receiveType"
                  @change="checkAll('编辑')"
                />&nbsp;所有人可见
                <div style="display: flex;">
                  <div style="width: 50%;">
                    <el-select
                      v-model="editList.orgIds"
                      multiple
                      clearable
                      collapse-tags
                      filterable
                      placeholder="请选择省分公司"
                    >
                      <el-option
                        v-for="item in optionss"
                        :key="item.id + ''"
                        :label="item.name"
                        :value="item.id + ''"
                      >
                      </el-option>
                    </el-select>
                    &nbsp;
                    <input
                      type="checkbox"
                      class="check"
                      v-model="editCheckOrg"
                      @change="checkPart('编辑', 'org')"
                    />
                  </div>
                  <div style="width: 50%;">
                    <el-select
                      v-model="editList.depIds"
                      multiple
                      clearable
                      filterable
                      collapse-tags
                      placeholder="请选择业务线条"
                    >
                      <el-option
                        v-for="item in optionas"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id + ''"
                      >
                      </el-option>
                    </el-select>
                    &nbsp;
                    <input
                      type="checkbox"
                      class="check"
                      v-model="editCheckDep"
                      @change="checkPart('编辑', 'dep')"
                    />
                  </div>
                </div>
              </div>
            </div>
data(){
 editCheckOrg: true,
      editCheckDep: true,
 optionss: [],//org列表
optionas: "",//dep列表
},


methods:{
//点编辑时的回显初始化
edit(){
//是否总全选选中,总选这个字段是需要创建数据时传参,回显时详情数据再返回
   if (this.editList.receiveType) {
        this.editList.orgIds = [];
        this.editList.depIds = [];
        this.optionss.forEach(item => {
          this.editList.orgIds.push(item.id + "");
        });
        if (this.optionas && this.optionas.length > 0) {
          this.optionas.forEach(item => {
            this.editList.depIds.push(item.id + "");
          });
        }
        // 如果是全选,局部也选上
        this.editCheckOrg = true;
        this.editCheckDep = true;
      } else {
        this.editCheckOrg = false;
        this.editCheckDep = false;
      }
},
 checkPart(status, type) {
      if (status === "编辑") {
        if (type === "org") {
          if (this.editCheckOrg) {
            this.editList.orgIds = [];
            this.optionss.forEach(item => {
              this.editList.orgIds.push(item.id + "");
            });
            //如果另一个部分选择框也被选择了,总全选选中
            if (this.editCheckDep) {
              this.editList.receiveType = true;
            } else {
              this.editList.receiveType = false;
            }
          } else {
            this.editList.receiveType = false;

            this.editList.orgIds = [];
          }
          return;
        }
        if (type === "dep") {
          if (this.editCheckDep) {
            this.editList.depIds = [];
            this.optionas.forEach(item => {
              this.editList.depIds.push(item.id + "");
            });

            if (this.editCheckOrg) {
              this.editList.receiveType = true;
            } else {
              this.editList.receiveType = false;
            }
          } else {
            //这个时候总全选可能没选中
            this.editList.receiveType = false;

            this.editList.depIds = [];
          }
        }
      }
      if (status === "新建") {
        if (type === "org") {
          if (this.newCheckOrg) {
            this.valueInfo = [];
            this.optionss.forEach(item => {
              this.valueInfo.push(item.id + "");
            });
            if (this.newCheckDep) {
              this.isAllSign = true;
            } else {
              this.isAllSign = false;
            }
          } else {
            this.valueInfo = [];
            this.isAllSign = false;
          }
          return;
        }
        if (type === "dep") {
          if (this.newCheckDep) {
            this.addxz = [];
            this.optionas.forEach(item => {
              this.addxz.push(item.id + "");
            });
            if (this.newCheckOrg) {
              this.isAllSign = true;
            } else {
              this.isAllSign = false;
            }
          } else {
            this.addxz = [];
            this.isAllSign = false;
          }
          return;
        }
      }
    },
    checkAll(status) {
      if (status === "编辑") {
        if (this.editList.receiveType) {
          this.editCheckOrg = true;
          this.editCheckDep = true;
          this.checkPart("编辑", "org");
          this.checkPart("编辑", "dep");
          this.$forceUpdate();
        } else {
          this.editCheckOrg = false;
          this.editCheckDep = false;
          this.checkPart("编辑", "org");
          this.checkPart("编辑", "dep");
        }
      }
      if (status === "新建") {
        //新建
        if (!this.isAllSign) {
          this.newCheckOrg = true;
          this.newCheckDep = true;
          this.checkPart("新建", "org");
          this.checkPart("新建", "dep");
        } else {
          this.newCheckOrg = false;
          this.newCheckDep = false;
          this.checkPart("新建", "org");
          this.checkPart("新建", "dep");
        }
      }
    },
},

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

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

相关文章

钉钉用一条斜杠,金山系用一张表格,做了华为一直想做的事

阿里的“新钉钉”又一次站在风口上 一场疫情导致数万企业停工的同时&#xff0c;却让阿里的钉钉、腾讯会议&#xff0c;还有字节跳动的飞书等在线协同办公产品火得一塌糊涂。 今天&#xff0c;OpenAI公司的一个chatGPT,让阿里、百度等各大互联网巨头扎堆发布大模型产品。 回顾…

kotlin的let,with,run,apply,also,异同区别

kotlin的let&#xff0c;with&#xff0c;run&#xff0c;apply&#xff0c;also&#xff0c;异同区别 例如&#xff1a; class Person(var name: String, var age: Int) {fun eat() {println("吃饭")}fun work(hour: Int): Int {println("$name $age 工作 $ho…

redmine问题跟踪系统4.1版本一键安装包下载

很好用的项目管理&#xff0c;缺陷跟踪系统&#xff0c;开源免费使用 Version 4.1.1-4 2020-08-31 由 redmineplugins.cn Admin 在 超过 2 年 之前添加 Version 4.1.1-4 2020-08-31 Maintenance releaseUpdated Apache to 2.4.46Updated Git to 2.28.0Updated PHP to 7.3.21U…

PHP 实现会话Session信息共享

目录 解决方案也有很多种&#xff1a; 会话保持 会话复制 会话共享 环境准备 架构设计 SessionHandlerInterface接口 代码编写 总结 优化 前言&#xff1a; 小流量的网站中&#xff0c;我们往往只需要一台服务器就可以维持用户正常的访问以及相关的操作。 随着网站的…

Jetpack Compose之线性布局和帧布局

作者&#xff1a;海塔灯 概述 Compose 中的线性布局对应的是Android传统视图中的LinearLayout,不一样的地方是&#xff0c;Compose根据Orientation的不同又将布局分为Column和Row, Column对应传统视图LinearLayout中orientation “vertical”的情况&#xff0c;Row对应传统视…

【AI炼丹术】写深度学习代码的一些心得体会

写深度学习代码的一些心得体会 体会1体会2体会3总结内容来源 一般情况下&#xff0c;拿到一批数据之后&#xff0c;首先会根据任务先用领域内经典的Model作为baseline跑通&#xff0c;然后再在这个框架内加入自己设计的Model&#xff0c;微调代码以及修改一些超参数即可。总体流…

RocketMQ第一节(MQ的初步了解)

目录 1&#xff1a;什么是消息队列 2&#xff1a;MQ的基础模型 3&#xff1a;MQ的作用 3.1&#xff1a;MQ用来解耦 3.2&#xff1a; 削峰填谷 4&#xff1a;MQ怎么选 1&#xff1a;什么是消息队列 MQ全称是Message Queue (消息队列)&#xff0c;是消息传输中间件&#xf…

huggingface下载的.arrow数据集读取与使用说明

1.数据下载方式&#xff1a;load_dataset 将数据集下载到本地&#xff1a;&#xff08;此处下载的是一个物体目标检测的数据集&#xff09; from datasets import load_dataset # 下载的数据集名称, model_name keremberke/plane-detection # 数据集保存的路径 save_path da…

mac十大必备软件排行榜 mac垃圾清理软件哪个好

刚拿到全新的mac电脑却不知道该怎么使用&#xff1f;首先应该装什么软件呢&#xff1f;如果你有同样的疑惑&#xff0c;今天这篇文章一定不要错过。接下来小编为大家介绍mac十大必备软件排行榜&#xff0c;以及mac垃圾清理软件哪个好。 一、mac十大必备软件排行榜 1.CleanMyM…

停车场管理系统的设计与实现_kaic

目 录 1 概 述 1.1研究背景 1.2研究现状 1.3研究内容 2 相关技术简介 2.1 JSP技术 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 3 系统需求分析 3.1 系统可行性分析 3.1.1 操作可行性 3.1.2 经济可行性 3.1.3 技术可行性 3.2 系统性能分析 3.3系统流程分析 3.3.1注册流程 3.3.…

智慧园区数字化转型下的移动App发展

随着智慧城市的建设和智慧园区的崛起&#xff0c;智慧园区数字一体化建设成为园区发展的重心&#xff0c;当然数字转型离不开移动应用的整合服务。 在过去的几年中&#xff0c;智慧园区移动应用已经发展成为园区管理和服务的重要手段之一&#xff0c;为企业和员工提供了更加便…

Machine Learning-Ex6(吴恩达课后习题)Support Vector Machines

目录 1. Support Vector Machines 1.1 Example Dataset 1 1.2 SVM with Gaussian Kernels 1.2.1 Gaussian Kernel 1.2.2 Example Dataset 2 1.2.3 Example Dataset 3 2. Spam Classification 2.1 Preprocessing Emails 2.1.1 Vocabulary List 2.2 Extracting Feature…

安卓GB28181-2022 RTP over TCP

使用TCP传输RTP包&#xff0c;GB28181-2016和GB28181-2022 都是按IETF RFC4571来的。使用TCP发送RTP包&#xff0c;前面加个16位无符号长度字段就好(网络字节序)。具体定义格式如下&#xff1a; 需要注意的是LENGTH值可以是0&#xff0c;0的话表示空包; 另外UDP传输RTP包&#…

第二届易派客工业品展圆满落幕 3天超7万人次观展

4月15日&#xff0c;第二届易派客工业品展览会在苏州国际博览中心成功闭幕&#xff0c;展会期间共7.4万人次观展。展会以“绿色•智造•融通•赋能”为主题&#xff0c;为参展企业衔接供需、共享商机、共促发展提供平台&#xff0c;推动工业企业数字化转型、致力供应链优化升级…

blast的-max_target_seqs?

Shah, N., Nute, M.G., Warnow, T., and Pop, M. (2018). Misunderstood parameter of NCBI BLAST impacts the correctness of bioinformatics workflows. Bioinformatics. 杂志Bioinformatics以letter to the editor的形式刊发了来自美国马里兰大学计算机系的Nidhi Shah等人…

powershell搞定烦人的Windows Defender

0x00 Windows Defender真烦 最近装了不少虚拟机&#xff0c;发现目前较新版本的windows Defender是真的烦&#xff0c;关了一段时间后&#xff0c;自己又打开。特别是装了域控后的winserver 2016&#xff0c;半都关不掉&#xff0c;做个实验是真烦。 顺手去查了下如何使用pow…

ThinkPHP模型操作上

ThinkPHP模型操作上 前言模型一、创建模型二、模型操作 总结 前言 在mvc架构中&#xff0c;模型的解释是写逻辑代码的地方&#xff0c;其实还可以这样理解&#xff0c;就是一串操作写在一个模型类中&#xff0c;就是你要完成某一项功能&#xff0c;将这个功能的代码写在一个mod…

2023年产业基金研究报告

第一章 行业概况 1.1 概述 产业基金&#xff0c;又称为产业投资基金&#xff0c;是一种由政府、企业、金融机构等出资设立的&#xff0c;专门用于支持和促进特定产业发展的投资基金。产业基金通常以股权投资和长期投资为主&#xff0c;旨在推动产业结构升级、促进科技创新、提…

基于ResNet-attention的负荷预测

一、attention机制 注意力模型最近几年在深度学习各个领域被广泛使用&#xff0c;无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中&#xff0c;都很容易遇到注意力模型的身影。从注意力模型的命名方式看&#xff0c;很明显其借鉴了人类的注意力机制。我们来看…

融云 CTO 岑裕:出海技术前沿探索和排「坑」实践

在本文中&#xff0c;你将看到以下内容&#xff1a; 全球通信网络在接入点、链路加速、服务商、协议等层面的动态演进&#xff1b; 进入到具体市场&#xff0c;禁运国、跨国拦截、区域一致性差等细节“坑点”如何应对&#xff1b; 融云如何从技术侧帮助开发者应对本地化用户体…