当前位置: 首页 > 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;用一种特殊的符号来替代文字。他和盟友事先约定好…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...