前端MiniUi批量操作实践
原创
羽泪云小栈
羽泪云小栈
羽泪云小栈
2026年6月25日 10:00
陕西
标题已修改
在小说阅读器读本章
去阅读
前言
远程为朋友解决问题,记录一下,朋友的需求如下:
需要找出目标工单号对应的工单答复件与原件,答复件在其电脑上就有,但原件在网站上。那么可以根据答复件的工单号在网站上查询下载到对应的原件。但是手动操作太繁琐(搜索→勾选→下载,重复多次),虽然有批量下载,但也需要进行查询勾选。
步骤
第 1 步:自动化提取工单号
因为对方没给工单号,所以只能通过其它筛选方式找到了可能满足条件的答复件,进而提取单号
- • 写脚本自动从答复件所在目录文件名提取工单号(字母开头+数字结尾)
- • 去重后得到一个干净的工单号列表
第 2 步:尝试 API 自动化下载
- • 想法:用 Python 调用网站接口,比如能自动搜索工单号→获取哈希值→下载文件
- • 现实:接口太复杂,涉及 GUID、RUID 等内部标识,而且很多变量是前端动态生成的,无法直接构造请求;console中fetch也不好弄
当API接口不支撑业务需求时,换个思路——直接操作前端组件
第 3 步:退而求其次,利用前端批量功能
- • 网站本身提供了\"批量勾选→批量下载\"的功能
- • 想法:如果能用代码自动勾选指定的工单号,再触发批量下载,就能实现半自动化
第 4 步:Console 操作 Grid
- • 发现页面的工单列表是 miniui.DataGrid 组件
-
• 在 Console 中可以操作 Grid:
-
•
grid.getData()获取当前页数据 - •
grid.select(row)勾选某一行 -
•
grid.getSelecteds()获取已勾选项 -
• 于是想到:用 JS 脚本根据工单号列表,批量勾选对应的行
其实还遇到一个问题就是,当前页显示的数据有限,需要再找翻页的方法。
之后代码的最终效果就是自动勾选目标单号,只需要手动点击批量下载即可成功导出原件。
Q&A
Q1.如何简单暴露全局变量,直接点击source栏下右边的Pause script execution会因为初始化加载缘故触发调试
A1:为了快速调试得到变量:
① F12 → Sources → Event Listener Breakpoints
② 勾选 Mouse → click
③ 点击页面上的按钮(查询、翻页、任意操作)
④ 断点停在事件处理函数里
⑤ 在 Console 里输入 grid,看有没有值
⑥ 如果有,直接退出调试,grid 就能一直用
Q2.关于得到的txt中每行工单的值,如何在前端的变量中直接使用?
A2:替换反引号内的值即可
const TICKETS = `
hang1
hang2
hang3
`.trim().split('\
');
Q3.bat+powershell遇到问题:
本来是只有一个bat,然后执行powershell语句:
询问得知是CMD 预处理机制 把 PowerShell 代码中的特殊字符(如 $、|、&、(、) 等)当成了 CMD 自己的命令或操作符来解析。所以最好分开写:
\\run.bat + Gdtiqu.ps1 \\ 把 PowerShell 代码放到了单独的 .ps1 文件中,绕过了 CMD 的预处理
所以最好分开写,但也要注意bat文件用:
@echo off
powershell -ExecutionPolicy Bypass -File Gdtiqu.ps1
pause
否则出现:未对文件xxx进行数字签名,拒绝执行的问题。
另外powershell里尽量不要有中文在里面,否则乱码报错:
这一块是因为:脚本保存为 UTF-8(无 BOM),但 PowerShell 默认用 ANSI(GBK)解码,导致中文字节被错误解析成无效语法,我干脆用英文了。
grid方法查找
打印相关方法是否存在,如果不存在就会显示undefined
// 查看 grid 有哪些 select 相关的方法
console.log(grid.select);
console.log(grid.selects);
console.log(grid.setSelected);
console.log(grid.doSelect);
// 查看 grid 的选中相关属性
console.log(grid.getSelecteds);
console.log(grid.getSelected);
console.log(grid.getSelection);
// 查看 grid 有哪些查找行的方法
console.log(grid.findRow);
console.log(grid.getRow);
console.log(grid.getRowByUID);
// 查看 grid 的全选/取消全选方法
console.log(grid.deselectAll);
console.log(grid.selectAll);
// 查看 grid 的分页相关
console.log(grid.getPageSize);
console.log(grid.setPageSize);
console.log(grid.pageSize);
console.log(grid.getPager);
console.log(grid.pager);
// 查看 grid 的 DataSource
console.log(grid._dataSource);
console.log(grid.dataSource);
console.log(grid.getDataSource);
// 查看 DataSource 的方法
const ds = grid._dataSource || grid.dataSource;
if (ds) {
console.log(ds.getData);
console.log(ds.getAllData);
console.log(ds.getDataByPage);
}
// 查看当前页码和总页数
console.log(grid.getPageIndex);
console.log(grid.getTotalPage);
console.log(grid.getTotalCount);
// 查看当前页数据
console.log(grid.getData());
console.log(grid.getAllData);
// 查看分页器信息
const pager = grid.getBottomPager();
console.log(pager.pageIndex);
console.log(pager.totalPage);
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论