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>

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

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

相关文章

UIButton案例之添加动画

需求 基于上一节代码进行精简&#xff0c;降低了冗余性。添加动画&#xff0c;使得坐标变化自然&#xff0c;同时使用了bounds属性和center属性&#xff0c;使得UIView变化以中心点为基准。 此外&#xff0c;使用两种方式添加动画&#xff1a;1.原始方式。 2.block方式。 代码…

vm虚拟机扩容centos磁盘内存

1.查看虚拟机扩展前磁盘内存 df -h 2.关机情况下扩展磁盘内存 3.对扩容的磁盘分区 fdisk /dev/sda 输入n新增分区&#xff0c;回车&#xff0c;选择p&#xff0c;回车 为分区设置分区格式&#xff0c;在Fdisk命令处输入&#xff1a;t 分区号用默认 3&#xff08;或回车&…

OSS证书自动续签,一分钟轻松搞定,解决阿里云SSL免费证书每3个月失效问题

文章目录 一、&#x1f525;httpsok-v1.11.0支持OSS证书自动部署介绍支持特点 二、废话不多说上教程&#xff1a;1、场景2、实战Stage 1&#xff1a;ssh登录阿里云 ECSStage 2&#xff1a;进入nginx &#xff08;docker&#xff09;容器Stage 3&#xff1a;执行如下指令Stage 3…

测试环境搭建整套大数据系统(十六:超级大文件处理遇到的问题)

一&#xff1a;yarn出现损坏的nodemanger 报错现象 日志&#xff1a;1/1 local-dirs usable space is below configured utilization percentage/no more usable space [ /opt/hadoop-3.2.4/data/nm-local-dir : used space above threshold of 90.0% ] ; 1/1 log-dirs usabl…

01-02-2

1、typedef的使用 a.语法 typedef 原名 别名&#xff1b;。 ​ typedef struct student {int num;char name[20];char sex; }stu,*pstu;//stu相当于struct student这个类型&#xff0c;*pstu相当于struct student * 别名的理解方法&#xff1a;若是字母前面有符号&#xff0…

SOUI4里使用字体回退

在新版本的SOUI里render-skia导出了一个新的函数用于字体回退功能。Render_Skia_SetFontFallback 函数原型如下&#xff1a; EXTERN_C void SOUI_COM_API Render_Skia_SetFontFallback(FontFallback fontFallback);因为我的工程是使用动态库&#xff0c;这里可以直接获取到这…

如何用微信小程序实现远程控制4路控制器/断路器

如何用微信小程序实现远程控制4路控制器/断路器呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制4路控制器/断路器&#xff0c;支持4路输出&#xff0c;均可独立控制&#xff0c;可接入各种电器。 可选用产品&#xff1a;可根据实际场景需求&#xf…

hydra常见服务爆破命令

简介 hydra 也称九头蛇&#xff0c; 是著名黑客组织thc的一款开源的暴力密码破解工具&#xff0c;可以破解多种密码。 1. 21端口爆破命令 21端口主要用于FTP(File Transfer Protocol&#xff0c;文件传输协议)服务&#xff0c; FTP服务主要是为了在两台计算机之间实现文件的…

代码随想录算法训练营Day38 | 动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 | Python | 个人记录向

注&#xff1a;Day37休息。 本文目录 动态规划理论基础509. 斐波那契数做题看文章 70. 爬楼梯做题看文章空间复杂度为O(n)版本空间复杂度为O(3)版本 746. 使用最小花费爬楼梯做题看文章 以往忽略的知识点小结个人体会 动态规划理论基础 代码随想录&#xff1a;动态规划理论基…

内容与图像一对多问题解决

场景复现 分析&#xff1a; 其实这是两给表&#xff0c;一个内容表&#xff0c;一个图片表&#xff0c;一对多的关系。 解决思路: 1. 先上传图片拿到图片的List集合ids&#xff0c;返回值是集合的ids&#xff0c;给到前端 2. 再添加内容表的数据生成了id&#xff0c;遍历查…

佳博打印机如何设置打印模式为热敏模式

1、打开电脑搜索框&#xff0c;如下图输入打印机: 2、点击打印机设置&#xff0c;如下图&#xff1a; 3、点击打印机首选项&#xff0c;如下图&#xff1a; 4、点击下图“卷”进行设置 也可对打印机间距高度进行调整

网络流初步(图论学习总结部分内容)

文章目录 前言五、网络流初步最大流&#xff08;Maximum flow&#xff0c;简称 M F MF MF&#xff09; e g 1 : eg1: eg1: [ P 2764 P2764 P2764 最小路径覆盖问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)](https://www.luogu.com.cn/problem/P2764) 最小费用最大流&am…

【深度学习】探秘PSD:合成到真实去雾框架的实例解析

揭秘PSD&#xff1a;合成到真实去雾框架的革新 一、PSD框架的提出背景二、PSD框架的原理与网络结构三、PSD框架的实现与代码示例四、结论与展望 在图像处理领域&#xff0c;去雾技术一直是一个备受关注的研究热点。然而&#xff0c;传统的去雾方法在面对真实世界的模糊图像时&a…

腐烂的橘子

代码实现&#xff1a; int orangesRotting(int **grid, int gridRowSize, int *gridColSizes) {int good 0, bad 0, t 0;for (int i 0; i < gridRowSize; i) {for (int j 0; j < gridColSizes[0]; j) {if (grid[i][j] 1) { // 记录好橘子数good;} else if (grid[i…

k8s集群的常用命令

查看帮助文档 kubectl --help&#xff1a;显示kubectl命令行工具的帮助信息。 配置kubectl kubectl config set-cluster [cluster-name] --server[server-url]&#xff1a;设置集群配置。kubectl config set-context [context-name] --cluster[cluster-name] --user[user-name]…

ABB机器人程序类型介绍

ABB机器人编程语言为rapid语言&#xff0c;在例行程序中可分为三类&#xff1a;普通程序、功能程序和中断程序。例如新建一个例行程序&#xff0c;会选择一个程序类型&#xff0c;三种类型的区别如下&#xff1a; 1、普通程序&#xff08;procedures&#xff09;&#xff1a;常…

信息系统架构_3.信息系统架构的一般原理

1.信息系统架构的研究 在信息系统中使用体系结构一词&#xff0c;不如计算机体系结构&#xff0c;网络体系结构和数据体系结构那么显而易见。这是因为信息系统是基于计算机、通信网络等现代化工具和手段&#xff0c;服务于信息处理的人机系统&#xff0c;不仅包括了计算…

优选算法——双指针补充

五、leetcode611.有效三角形的个数 题目分析&#xff1a; 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 算法原理&#xff1a; 应用三角形任意量两边之和大于第三边&#xff1b; 解决方案&#xff1a;利用单调性解决&#xf…

蓝桥杯国赛每日一题:日志统计(双指针)

题目描述&#xff1a; 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 N行。 其中每一行的格式是&#xff1a; ts id 表示在 ts时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长…

5.13学习日志

Pytorch 神经网络基础 1.模型构造 1》层和块 块可以描述单个层&#xff0c;由多个层组成的组件或者模型本身 块由类表示&#xff0c;类的任何子类都必须定义一个将其输入转换为输出的前向传播函数。为了计算梯度&#xff0c;块必须具有反向传播函数 自定义块&#xff1a; …