存档&改造【02】下载文件模板 打印二维码样式设置

1.下载文件模板 

文件模板获取得先设置好全局变量和获取文件URL

声明变量

function fileDownload(url, name) {return new Promise((resolve, reject) => {var xhr = new XMLHttpRequest();xhr.open("GET", url, true); // 也可以使用POST方式,根据接口xhr.responseType = "blob"; // 返回类型blob// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑xhr.onload = function () {// 请求完成if (this.status === 200) {// 返回200var blob = this.response;var reader = new FileReader();reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情hrefreader.onload = function (e) {// 转换完成,创建一个a标签用于下载var a = document.createElement("a");a.download = name;a.href = e.target.result;$("body").append(a); // 修复firefox中无法触发clicka.click();resolve(200)$(a).remove();};}};// 发送ajax请求xhr.send();})
};

获取URL的动态操作

配置后点击导入模板下载终于有东西了

只不过因为没存东西进去,所以打开是这样的

需要在对应网址配置下载内容。

2.生成二维码

 要设置二维码打印样式,将样式设置做成对话框的形式,实现在上面预览打印效果图,先创建一个

配置二维码生成

在【动态操作】中配置

declarev_err_msg nvarchar2(2000);v_clob    clob;/*** create by: xiaoxian* create date: 2023-09-20 16:32* modify by:* modify date:* describe:*/
beginselect json_arrayagg(json_object(key 'DEVICE_ID' value DEVICE_ID,key 'DEVICE_NAME' value DEVICE_NAME,key 'DEVICE_CODE' value DEVICE_CODE,key 'IP' value IP,key 'FAB_ID' value FAB_ID,key 'MAP_AREA_X_ID' value MAP_AREA_X_ID,key 'MAP_AREA_Y_ID' value MAP_AREA_Y_ID,key 'MANAGEMENT_EXT_ORG_ID' value MANAGEMENT_EXT_ORG_ID,key 'CATEGORY_FIRST_CODE' value CATEGORY_FIRST_CODE,key 'CATEGORY_SECOND_CODE' value CATEGORY_SECOND_CODE))
into v_clob
from (select s.DEVICE_ID,s.DEVICE_NAME,s.DEVICE_CODE,s.IP,s.FAB_ID,s.MAP_AREA_X_ID,s.MAP_AREA_Y_ID,s.MANAGEMENT_EXT_ORG_ID,s.CATEGORY_FIRST_CODE,s.CATEGORY_SECOND_CODEfrom JM_BASIC_DEVICE s)
where DEVICE_ID in (select * from table ( SPLITSTR(:P14_INST_IDS, ',') ));apex_util.set_session_state('P14_RESP_DATA', v_clob);exceptionwhen others thenv_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;JA_WRITE_LOG('P' || :APP_PAGE_ID || '二维码生成', 'ERROR', V_ERR_MSG, :USER_ID, :USER_TENANT,:APP_NAME || ':' || :APP_ID);
end;
function showInstrumentDetails() {//解析获取JSON字符串 var myJSONString = decodeURIComponent(apex.item('P14_RESP_DATA').getValue());//转换字符串为原始格式var myJSONArray = JSON.parse(myJSONString);var myDiv = document.getElementById('instrument-list');//仪器二维码标签循环for (var i = 0; i <= myJSONArray.length - 1; i++) {var myObj = myJSONArray[i];//生成listvar myUl = document.createElement('ul');myUl.id = 'myUl' + i;//ul标签添加属性myUl.className = 'list-unstyled fw-bold';//设备IPvar myLi1 = document.createElement('li');myLi1.innerHTML = '设备IP: ' + myObj.IP;//所在位置var myLi2 = document.createElement('li');myLi2.innerHTML = '所在位置: ' + myObj.FAB_ID + myObj.MAP_AREA_X_ID + myObj.MAP_AREA_Y_ID ;myLi2.classList.add('mt-3');//责任部门var myLi3 = document.createElement('li');myLi3.innerHTML = '责任部门: ' + myObj.MANAGEMENT_EXT_ORG_ID;myLi3.classList.add('mt-3');//大类名称var myLi4 = document.createElement('li');myLi4.innerHTML = '大类名称: ' + myObj.CATEGORY_FIRST_CODE;myLi4.classList.add('mt-3');//小类名称var myLi5 = document.createElement('li');myLi5.innerHTML = '小类名称: ' + myObj.CATEGORY_SECOND_CODE;myLi5.classList.add('mt-3');//list子元素添加到添加到父元素中myUl.appendChild(myLi1);myUl.appendChild(myLi2);myUl.appendChild(myLi3);myUl.appendChild(myLi4);myUl.appendChild(myLi5);//二维码标签属性var myInstrumentDiv = document.createElement('div');myInstrumentDiv.id = 'myInstrumentDiv' + i;myInstrumentDiv.className = 'shadow rounded-4 m-1';myInstrumentDiv.style.position = 'relative';myInstrumentDiv.style.height = '300px';myInstrumentDiv.style.width = '420px';//标签标题与属性var myH4 = document.createElement('h4');myH4.className = 'text-center pt-3';myH4.innerHTML = '' + myObj.DEVICE_NAME;//分割线——1var myHr1 = document.createElement('hr');//二维码标签效果var myDiv2 = document.createElement('div');myDiv2.id = 'qrcode_content';myDiv2.style.paddingLeft = '20px';myDiv2.className = 'mt-3';myDiv2.appendChild(myUl);//分割线——2var myHr2 = document.createElement('hr');myHr2.style.marginTop = '15px';//二维码内容var qr_content = '&APP_URL.f?p=106:4:&inst_id=' + myObj.DETAILS_ID;var myDiv3 = document.createElement('div');myDiv3.id = 'qrcode' + i;myDiv3.style.position = 'absolute';myDiv3.style.bottom = '70px';myDiv3.style.right = '60px';//list添加到标签myInstrumentDiv.appendChild(myH4);myInstrumentDiv.appendChild(myHr1);myInstrumentDiv.appendChild(myDiv2);myInstrumentDiv.appendChild(myHr2);myInstrumentDiv.appendChild(myDiv3);//生成二维码传递参数makeqrcode(qr_content, myDiv3);myDiv.appendChild(myInstrumentDiv);}
}
//调用函数
showInstrumentDetails();// apex.storage.setSessionStorage('inst_details_id', myObj.INST_DETAILS_ID);//生成二维码函数
function makeqrcode(qr_content, qrcodeElem) {const qr = new QRCode(qrcodeElem, { width: 3200, height: 1800 });    //二维码尺寸大小qr_content.oninput = (e) => {qr.makeCode(e.target.value.trim());};qr.makeCode(qr_content.trim());}

二维码出来了,但是又没完全出来(之所以设3200px*1800px那么大是因为考虑后期可能会压缩图像大小,干脆一开始需求里做大一点)

改了以后(依旧很丑orz)

除了格式上的问题,还有就是显示上的问题,想要显示名称而不是id/编号;(我找到问题的根源了,在pl/sql语句那里)

改动参数即可修改位置

修改后的样式顺眼多了

接下来就是解决内容展示

重新修改了

declarev_err_msg nvarchar2(2000);v_clob    clob;/*** create by: xiaoxian* create date: 2023-09-21 15:49* modify by:* modify date:* describe:设备二维码预览2.0*/
beginselect json_arrayagg(json_object(key 'DEVICE_ID' value DEVICE_ID,key 'DEVICE_NAME' value DEVICE_NAME,key 'DEVICE_CODE' value DEVICE_CODE,key 'IP' value IP,key 'FAB_ID' value FAB_ID,key 'MAP_AREA_X_ID' value MAP_AREA_X_ID,key 'MAP_AREA_Y_ID' value MAP_AREA_Y_ID,key 'MANAGEMENT_EXT_ORG_ID' value MANAGEMENT_EXT_ORG_ID,key 'CATEGORY_FIRST_CODE' value CATEGORY_FIRST_CODE,key 'CATEGORY_SECOND_CODE' value CATEGORY_SECOND_CODE,))
into v_clob
from (select s.DEVICE_ID,s.DEVICE_NAME,s.DEVICE_CODE,s.IP,(select d.NAME from FND_FAB d where d.FAB_ID = s.FAB_ID) FAB_ID ,(select x.NAME from FND_AREAS x where x.FAB_ID = s.MAP_AREA_X_ID) MAP_AREA_X_ID,(select y.NAME from FND_AREAS y where y.FAB_ID = s.MAP_AREA_X_ID) MAP_AREA_Y_ID,(select b.MANAGEMENT_EXT_ORG_NAME from BASIC_DEVICE_BUFF_3 b where b.MANAGEMENT_EXT_ORG_ID = s.MANAGEMENT_EXT_ORG_ID) MANAGEMENT_EXT_ORG_ID,(select b.CATEGORY_FIRST_NAME from BASIC_DEVICE_BUFF_3 b where b.CATEGORY_FIRST_CODE = s.CATEGORY_FIRST_CODE) CATEGORY_FIRST_CODE,(select b.CATEGORY_SECOND_NAME from BASIC_DEVICE_BUFF_3 b where b.CATEGORY_SECOND_CODE= s.CATEGORY_SECOND_CODE) CATEGORY_SECOND_CODEfrom JM_BASIC_DEVICE s)
where DEVICE_ID in (select * from table ( SPLITSTR(:P13_DEVICE_ID, ',') ));apex_util.set_session_state('P13_RESP_DATA', v_clob);exceptionwhen others thenv_err_msg := sqlerrm || chr(13) || dbms_utility.format_error_backtrace;JA_WRITE_LOG('P' || :APP_PAGE_ID || '二维码生成', 'ERROR', V_ERR_MSG, :USER_ID, :USER_TENANT,:APP_NAME || ':' || :APP_ID);
end;select * from fnd_maps_areas_asso_v;

打印结果

找到原因了,pl/sql里多了一个逗号

新的问题又已出现

破案了,在这儿呢

出来了,但是又没完全出来

和之前的对比一下

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

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

相关文章

Redis的安装与基本使用

文章目录 Linux 环境下安装Redis下载Redis 安装包解压安装包安装Redis进入redis安装包下编译并且安装到指定目录下 启动redis配置远程访问找到Redis.config文件 Windows 环境下安装Redis说明官方提供方式安装或启用WSL2在WSL&#xff08;Ubuntu&#xff09;上安装Redis启动Redi…

【三次握手、四次挥手】TCP建立连接和断开连接的过程、为什么需要三次握手,为什么需要四次挥手、TCP的可靠传输如何保证、为什么需要等待2MSL等重点知识汇总

目录 三次握手 为什么握手需要三次 四次挥手 为什么挥手需要四次 TCP的可靠传输如何保证 TIME_WAIT等待的时间是2MSL 三次握手 三次握手其实就是指建立一个TCP连接。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的…

IOTE 2023国际物联网展直击:芯与物发布全新定位芯片,助力多领域智能化发展

IOTE 2023国际物联网展&#xff0c;作为全球物联网领域的盛会&#xff0c;于9月20日在中国深圳拉开帷幕。北斗星通集团应邀参展&#xff0c;旗下专业从事物联网、消费类GNSS芯片研发设计的芯与物公司也随其亮相本届盛会。 展会上&#xff0c;芯与物展示了一系列创新的GNSS定位…

Spring 学习(四)注解实现自动装配及注解开发

1. 注解实现自动装配 JDK 1.5 开始支持注解&#xff0c;Spring 2.5 开始支持注解。 使用须知 导入约束 配置注解的支持&#xff08; <context:annotation-config/> &#xff09; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns&qu…

在pandas中使matplotlib动态画子图的两种方法【推荐gridspec】

先上对比图&#xff0c; 第一种方法&#xff0c;这里仅展示1个大区&#xff0c;多个的话需要加一层循环就可以了&#xff0c;主要是看子图的画法 当大区下面的国家为1个或2个时&#xff0c;会进行报错 # 获取非洲国家列表 african_countries df[df[大区] 南亚大区][进口国…

flink中不同序列化器性能对比

背景 flink有多种序列化方式&#xff0c;包括flink内置的以及fallback到kryo的&#xff0c;那么他们之间有多大的性能差距呢&#xff0c;本文就从https://flink.apache.org/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/这篇文章里摘录…

【李沐深度学习笔记】线性代数实现

课程地址和说明 线性代数实现p2 本系列文章是我学习李沐老师深度学习系列课程的学习笔记&#xff0c;可能会对李沐老师上课没讲到的进行补充。 这节就算之前内容的复习&#xff0c;后面以截图形式呈现 标量由只有一个元素的张量表示 import torch x torch.tensor([3.0]) y …

华为云云耀云服务器L实例评测|搭建CounterStrike Source Delicated Server(CS起源游戏服务器)

华为云云耀云服务器L实例评测&#xff5c;搭建CounterStrike Source Delicated Server&#xff08;CS起源游戏服务器&#xff09; #【有奖征文】华为云云服务器焕新上线&#xff0c;快来亲身感受评测吧&#xff01;# ⭐️ CounterStrikeSource&#xff08;CS起源是Valve的一款…

【Vue简介+搭建Vue开发环境+Hello小案例】

Vue简介搭建Vue开发环境Hello小案例 1 Vue简介2 搭建Vue开发环境3 Hello小案例 1 Vue简介 Vue是一套用于构建用户界面的渐进式JavaScript框架。&#xff08;渐进式&#xff1a;Vue可以自底向上逐层的应用<简单应用&#xff1a;只需要一个轻量小巧的核心库><复杂应用&…

tp8 Editor.md

Editor.md - 开源在线 Markdown 编辑器 放于public文件夹下 html代码&#xff1a; <div class"layui-col-md12" id"content"><textarea name"content" placeholder"详情" class"layui-textarea">{notempty nam…

05-Zookeeper典型使用场景实战

上一篇&#xff1a;04-Zookeeper集群详解 1. Zookeeper 分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下&#xff0c;性能会下降的比较厉害&#xff0c;主要原因是&#xff0c;所有的连接都在对同一个节点进行监听&#xff0c;当服务器检测到删除事件时&#xff0c…

目标追踪学习经验总结

标题目标追踪算法学习经验总结   最近对目标追踪算法进行了学习&#xff0c;以下是我的学习经验&#xff0c;如有不对之处&#xff0c;欢迎大家指正。 1、简介 1.1 定义 目标跟踪是通过分析视频图片序列&#xff0c;对检测出的各个候选目标区域实施匹配&#xff0c;定位出这…

nat综合实验

路漫漫其修远兮,吾将上下而求索。 实验目的如图 实验思路&#xff1a;配置内网&#xff0c;再配置外网&#xff0c;再做nat clien1配置 clien2配置 pc3配置 lsw1配置 sysname lsw1 # vlan batch 10 20 30 # interface MEth0/0/1 # interface Eth-Trunk1port link-type trunkp…

数据结构——排序

排序算法 前言一、认识排序排序的概念常见的排序算法排序实现的接口 二、常见排序算法的实现插入排序直接插入排序希尔排序 选择排序直接选择排序堆排序 交换排序冒泡排序 三、各个排序的效率比较四、完整代码演示&#xff1a;shell_insert.hshell_insert.ctest.c 总结 前言 来…

怎样在CSDN插入代码块 怎么变色?

添加代码块&#xff0c;通常有三种方式&#xff1a; 文章目录 ①点击 工具栏中的代码块 代码块 </>&#xff0c;② 快捷键 ctrlshiftk③ 先粘贴上代码&#xff0c;在选中 ctrlshiftk4 如果代码没有变彩色 ①点击 工具栏中的代码块 代码块 </>&#xff0c; 例如 选…

Docker版部署RocketMQ开启ACL验证

一、拉取镜像 docker pull apache/rocketmq:latest 二、准备挂载目录 mkdir /usr/local/rocketmq/data mkdir /usr/local/rocketmq/conf 三、运行 docker run \ -d \ -p 9876:9876 \ -v /usr/local/rocketmq/data/logs:/home/rocketmq/logs \ -v /usr/local/rocketmq/data…

Redis之zset类型

文章目录 Redis之zset类型1. 添加元素/获取集合中元素的数量2. 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素3. 获取元素的分数4. 删除元素5. 获取指定分数范围的元素6. 增加某个元素的分数7. 获得指定分数范围内的元素个数8. 获取元素的排名9. 按照排名范围…

Hive【Hive(二)DML】

启动 hive 命令行&#xff1a; hive DML 数据操作 1、数据导入 1.1、向表中装载数据&#xff08;load&#xff09; 语法&#xff1a; hive> load data [local] inpath 数据的path [overwrite] into table student [partition (partcol1val1,…)];&#xff08;1&#x…

轻松上手Docker:学习如何创建和运行自己的Docker容器

文章目录 轻松上手Docker&#xff1a;学习如何创建和运行自己的Docker容器容器的介绍Docker的技术架构容器的工作机制&#xff08;Docker&#xff09;容器的关键技术 - NamespaceNamespace隔离说明 容器的关键技术 - CgroupDocker环境搭建1&#xff09;安装基础软件包2&#xf…

十四,间接漫反射用到球体中

间接光照分为间接漫反射和间接镜面反射。 辐照度图是用来适用于间接漫反射的。 直射光也有漫反射&#xff0c;对比下两者。 直接光kD * albedo / PI * radiance * NdotL&#xff1b;其中radiance * NdotL是光照, 间接光&#xff1a; kD * texture(irradianceMap, N).rgb* al…