当前位置: 首页 > news >正文

vue项目通过点击文字上传html文件,查看html文件

上传html文件

解决思路:新建一个上传组件,将它挪到页面之外。当点击文字时,手动触发上传组件,打开上传文件框。

<template><BasicTable @register="registerTable"><template #bodyCell="{ column, record }"><template v-if="column.key === 'action'"><TableAction :actions="[{label: '上传',onClick: handleUploadClick.bind(null, record),},{label: '上传记录',onClick: handleCheck.bind(null, record),}]" /></template></template></BasicTable><!-- 页面外的上传组件,点击文字后触发 --><a-upload ref="uploadDom" :show-upload-list="false" :customRequest="handleUpload" class="record-uploader"><a-button type="primary">上传已填写的模板</a-button></a-upload>
</template><script lang="ts">import { defineComponent, onMounted, ref, unref, onUpdated } from 'vue';import { BasicTable, useTable, TableAction } from '/@/components/Table';import { message } from 'ant-design-vue';import { grtBannerList } from "/@/api/b2b/serviceManagement";import { getBasicColumns } from './index.data';import { uploadHtml } from '/@/api/b2b/systemSet';import {Button,Upload,} from 'ant-design-vue';export default defineComponent({name: 'agreementSetPage',components: {BasicTable,AButton: Button,AUpload: Upload,TableAction,},setup() {const [registerTable, { setShowPagination }] = useTable({// api: grtBannerList,dataSource: tableData,columns: getBasicColumns(),useSearchForm: false,tableSetting: {redo: false,size: false,},showIndexColumn: false,rowKey: 'id',actionColumn: {width: 120,title: '操作',dataIndex: 'action'},});const tabActiveKey = ref<string | number>('1');const uploadDom = ref(null)// 手动触发上传function handleUploadClick(record: any) {tabActiveKey.value = record.iduploadDom.value.$el.querySelector('button').click()}// 上传方法function handleUpload(file) {if (file.file.type !== "text/html") {message.warning('请上传html格式的文件')return}let formData = new FormData();formData.append('file', file.file);formData.append('type', unref(tabActiveKey));uploadHtml(formData).then(async (res) => {message.success('上传成功')});}// 查看上传记录function handleCheck(record) {tabActiveKey.value = record.idtitle.value = `上传记录(${record.agreementType})`let data = { id: record.id }openModalOperateRecord(true, data);}return {registerTable,registerOperateRecord,isShow,handleUploadClick,handleCheck,bannerDate,handleUpload,tabActiveKey,uploadDom,tabActiveKey,title};}})
</script>

查看html文件

解决思路:将接口返回的html完整文件代码缓存到本地,然后读取本地保存的html数据,使用新窗口打开,就能查看html文件。

<template><div><BasicModal v-bind="$attrs" @register="registerModal" :title="title" okText="确定" cancelText="取消":canFullscreen="false" :footer="null" @visible-change="handleVisibleChange" @ok="handleOk"wrapClassName="recordModalWrap" :useWrapper="false" :width="630" :top="19"><BasicTable @register="registerRecordTable"><template #bodyCell="{ column, record }"><template v-if="column.key === 'action'"><TableAction :actions="[{label: '查看',onClick: handleCheck.bind(null, record),},]" /></template></template></BasicTable></BasicModal></div>
</template><script lang="ts">
import { defineComponent, ref } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicTable, useTable, BasicColumn, TableAction } from '/@/components/Table';
import { GetOperateRecordPage } from '/@/api/b2b/systemSet';const recordColumns: BasicColumn[] = [{title: '上传时间',dataIndex: 'createTime',},
];
export default defineComponent({name: 'SystemSetOperateRecord',components: { BasicTable, BasicModal, TableAction },props: {tabActiveKey: { type: [String, Number], require: true },title: { type: String, default: '' }},emits: ['success', 'register'],setup(props, { emit }) {console.log(666, props);const modelRef = ref({});const [registerRecordTable, { reload }] = useTable({api: GetOperateRecordPage,columns: recordColumns,useSearchForm: false,showTableSetting: false,showIndexColumn: false,striped: false,rowKey: 'id',scroll: { y: 330 },actionColumn: {width: 120,title: '操作',dataIndex: 'action'},fetchSetting: { listField: 'records', totalField: 'total' },beforeFetch: (params) => {let newParams = {...params,type: props.tabActiveKey,};return newParams;},});const [registerModal] = useModalInner((data) => {reload()});function handleCheck(record: any) {// 读取本地保存的html数据,使用新窗口打开window.localStorage.removeItem('callbackHTML');window.localStorage.setItem('callbackHTML', record.content)let newWin = window.open('')newWin.document.write(localStorage.getItem('callbackHTML'))newWin.document.close() // 关闭输出流}function handleVisibleChange(v) { }async function handleOk() { }return {registerModal,model: modelRef,handleCheck,registerRecordTable,handleVisibleChange,handleOk,};},
});
</script><style scoped lang="less">
:deep(.ant-table-wrapper) {padding: 0px !important;
}:deep(.ant-spin-container) {height: 442px;
}:deep(.scroll-container) {padding: 0 !important;
}:deep(.ant-pagination-options-quick-jumper) {display: none;
}:deep(.ant-table-body) {height: 330px !important;max-height: 696px !important;
}
</style>

相关文章:

vue项目通过点击文字上传html文件,查看html文件

上传html文件 解决思路&#xff1a;新建一个上传组件&#xff0c;将它挪到页面之外。当点击文字时&#xff0c;手动触发上传组件&#xff0c;打开上传文件框。 <template><BasicTable register"registerTable"><template #bodyCell"{ column, …...

【WEEK12】 【DAY1】整合JDBC【中文版】

2024.5.13 Monday 目录 11.整合JDBC11.1.SpringData简介11.2.新建springboot-04-data项目11.3.新建application.yaml11.4.连接数据库11.5.修改Springboot04DataApplicationTests.java11.5.1.查看DataSourceProperties.java和DataSourceAutoConfiguration.java 11.6.JDBCTempla…...

23种设计模式(软考中级 软件设计师)

设计模式 23个设计模式&#xff0c;23个意图 1. 设计模式概要 设计模式的核心在于提供了相关问题的解决方案&#xff0c;使得人们可以更加简单方便的复用成功的设计和体系结构 设计模式的类别 创建型结构型行为型类工厂方法模式适配器模式&#xff08;类&#xff09;解释器模…...

记录一下 log4j的漏洞

目录 背景 bug的产生 bug复现 JNDI 网络安全学习路线 &#xff08;2024最新整理&#xff09; 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明&#xff1a; 背景 log4j这次的bug&#xff0c;我相信大家都已经知道了&#xff0c;仅以…...

Springboot-配置文件中敏感信息的加密:三种加密保护方法比较

一. 背景 当我们将项目部署到服务器上时&#xff0c;一般会在jar包的同级目录下加上application.yml配置文件&#xff0c;这样可以在不重新换包的情况下修改配置。 一般会将数据库连接、Redis连接等放到配置文件中。 例如配置数据库连接&#xff1a; spring:servlet:multip…...

linux 性能监控命令之dstat

1. dstat 系统默认为安装&#xff0c;直接安装阿里源后&#xff0c;yum install -y dstat安装即可&#xff0c;该命令整合了 vmstat &#xff0c; iostat 和 ifstat&#xff0c;我们先看下效果&#xff1a; 我们先看看具体参数&#xff1a; [rootk8s-master ~]# dstat --help …...

花趣短视频源码淘宝客系统全开源版带直播带货带自营商城流量主小游戏功能介绍

1、首页仿抖音短视频 &#xff0c;关注 &#xff0c;我的 本地 直播 可发布短视频 可录制上传 2、商城页面 广告位、淘口令识别、微信登录、淘宝登录、淘宝返佣、拼多多返佣、京东返佣、唯品会返佣、热销榜、聚划算、天猫超市、9.9包邮、品牌特卖、新人攻略 、小米有品、优惠加…...

大模型管理工具:Ollama

目录 一、Ollama 介绍 二、Linux 安装 Ollama 2.1 一键安装 2.2 手动安装 三、使用Ollama 3.1 配置模型下载路径 3.2 运行模型 3.3 常用命令 四、模型管理 4.1 官方模型库 4.2 导入自定义模型 五、REST API 六、Web UI 一、Ollama 介绍 Ollama 是一个基于 Go 语言…...

recycleView的item,TV正确方式获取焦点,以及刷新界面

如果你正需要recycleView的焦点 GlobalScope.launch (Dispatchers.Main){ // layout.isVisible truesettingBinding.rootLayout.isVisible truesettingBinding.rvSettingTab.layoutManager?.scrollToPosition(itemPositionSelect)if(!GlobalVariable.isT…...

QT内存管理机制

1.父子关系管理&#xff1a;Qt 对象之间可以建立父子关系。当一个对象是另一个对象的子对象时&#xff0c;父对象负责管理子对象的生命周期。当父对象被销毁时&#xff0c;它所拥有的子对象也会被销毁&#xff0c;从而释放相关的内存。这种机制简化了内存管理&#xff0c;确保在…...

亚马逊卖家,如何打造爆款,如何提高产品权重、曝光、流量?

新老卖家们要知道&#xff0c;亚马逊A9算法影响产品排名的关键因素&#xff1a;产品相关性、销售排名、产品价格、点击率、转化率、产品图片、买家评论、买家满意度、QA的答复情况、搜索结果页详细信息级别。亚马逊A9算法&#xff0c;是根据卖家提供的listing文案信息进行收录、…...

处理HTTP请求的服务器

处理HTTP请求的服务器&#xff0c;通常被称为HTTP服务器或Web服务器。其主要功能包括接收、解析、处理和响应HTTP请求。 HTTP服务器处理HTTP请求的基本流程&#xff1a; 接收请求&#xff1a;服务器监听特定的网络端口&#xff0c;等待客户端&#xff08;如Web浏览器&#xf…...

打造本地GPT专业领域知识库AnythingLLM+Ollama

如果你觉得openai的gpt没有隐私&#xff0c;或者需要离线使用gpt&#xff0c;还是打造专业领域知识&#xff0c;可以借用AnythingLLMOllama轻松实现本地GPT. AnythingLLMOllama 实现本地GPT步聚&#xff1a; 1 下载 AnythingLLM软件 AnythingLLM官网地址&#xff1a; Anythi…...

数据可视化训练第6天(美国人口调查获得关于收入与教育背景的数据,并且可视化)

数据来源 https://archive.ics.uci.edu/dataset/2/adult 过程 首先&#xff1b;关于教育背景的部分翻译有问题。 本次使用字典嵌套记录数据&#xff0c;并且通过lambda在sorted内部进行对某个字典的排序&#xff0c;最后用plotly进行绘图 本次提取数据的时候&#xff0c;用到…...

如何更换远程服务器的Python版本

目录 前言 正文 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ningbo China&#x1f4eb; You can reach me by url below:My Blo…...

Python 运筹优化13 Thompson Sampling 解读

说明 这部分应该是Multi-Armed Bandit的最后一部分了。 内容 1 On Line Ads 这个实验&#xff0c;最初的目的就是为了选出最佳的广告。首先&#xff0c;通过伯努利分布&#xff0c;模拟了某个广告的有效率。在真实场景里&#xff0c;我们是无法知道那个广告更好的。可能在t…...

计算机毕业设计 | SpringBoot健身房管理系统(附源码)

1&#xff0c;项目背景 随着人们生活水平的提高和健康意识的增强&#xff0c;健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求&#xff0c;需要一种更加高效、智能、安全的管理系…...

大模型LLM 结合联网搜索增强isou

参考&#xff1a; https://github.com/yokingma/search_with_ai 在线使用网址&#xff1a; https://isou.chat/ 安装github下载&#xff0c;运行docker compose 如果一直报下面错误&#xff1a; 解决方法https://github.com/yokingma/search_with_ai/pull/7 默认打开&a…...

软删除和硬删除的区别及实际应用

在处理数据存储时&#xff0c;删除操作是不可避免的一部分。然而&#xff0c;并非所有的删除都是相同的。在本篇博客中&#xff0c;我们将探讨软删除&#xff08;Soft Delete&#xff09;和硬删除&#xff08;Hard Delete&#xff09;的概念、它们之间的区别&#xff0c;以及如…...

算法加密-简介

前言 在遥远的古代&#xff0c;信息的传递至关重要。战争时期&#xff0c;将领们需要确保自己的作战计划不被敌人知晓。 有一次&#xff0c;一位聪明的将军想要给远方的盟友传递一份机密战略部署。他想到了一个办法&#xff0c;用一种特殊的符号来替代文字。他和盟友事先约定好…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...