yiwaima Author

ERP 供应商搜索工具脚本信息

基本信息

属性 说明
脚本名称 ERP 供应商搜索工具
作者 yiwaima
版本 2.1
许可证 MIT
适用网站 https://www.erp321.com/app/scm/purchaseout/purchaseout.aspx
脚本类型 Tampermonkey 用户脚本
OpenUserJS地址 https://openuserjs.org/scripts/yiwaima/ERP_供应商搜索工具

功能描述

该脚本是一个为ERP系统设计的供应商搜索工具,提供了以下核心功能:

1. 浮动搜索窗口

  • 在ERP页面右上角创建一个可拖拽的搜索窗口
  • 窗口宽度固定,支持折叠/展开状态切换
  • 提供平滑的过渡动画效果

2. 窗口交互功能

  • 拖拽定位:通过标题栏可以自由拖动窗口到任意位置
  • 边缘吸附:当窗口靠近屏幕边缘时自动吸附并折叠
  • 自动折叠:鼠标离开窗口后自动检查是否需要吸附到边缘
  • 状态记忆:分别记忆窗口展开和折叠状态的位置,下次使用时恢复

3. 供应商搜索功能

  • 提供搜索输入框,支持输入供应商相关信息
  • 点击搜索按钮后,通过ERP API获取供应商数据
  • 自动提取供应商名称和ID
  • 将供应商名称自动复制到剪贴板

4. 供应商备注获取

  • 自动获取供应商的备注信息
  • 如果有备注信息,以红色高亮显示在界面上
  • 无备注时显示"无特殊要求"

5. 表格复制按钮

  • 为ERP表格添加复制按钮,支持一键复制"供应商退货单号."格式的文本
  • 按钮样式与现有UI保持一致,使用文字"复制"而非emoji
  • 支持多种表格结构(传统table和div结构表格)

6. 自动选择表格行

  • 搜索完成后自动选中表格第一行数据
  • 自动勾选目标行的复选框
  • 智能识别数据行,排除操作按钮行和表头
  • 支持多种表格结构

技术实现

1. 界面构建

// 创建搜索容器
const searchContainer = document.createElement('div');
searchContainer.style.cssText = `
    position: fixed;
    top: 10px;
    right: auto;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 0;
    background: white;
    padding: 0;
    border: 2px solid #4A90E2;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    user-select: none;
    font-family: Arial, sans-serif;
`;

2. 拖拽实现

dragHeader.addEventListener('mousedown', (e) => {
    isDragging = true;
    startX = e.clientX - searchContainer.offsetLeft;
    startY = e.clientY - searchContainer.offsetTop;
    searchContainer.style.zIndex = '10000'; // 拖动时提高层级
    
    // 如果窗口处于折叠状态,先展开
    if (isCollapsed) {
        expandWindow();
    }
});

3. 边缘吸附检查

function checkEdgeSnap() {
    const threshold = 10; // 距离边缘的阈值
    const currentLeft = parseInt(searchContainer.style.left);
    const currentTop = parseInt(searchContainer.style.top);
    
    // 保存原始位置
    originalPosition = { left: searchContainer.style.left, top: searchContainer.style.top };
    openStatePosition = { left: searchContainer.style.left, top: searchContainer.style.top };
    
    // 检查是否靠近左侧边缘
    if (currentLeft <= threshold) {
        collapseWindow('left');
    }
    // 检查是否靠近右侧边缘
    else if (currentLeft >= window.innerWidth - searchContainer.offsetWidth - threshold) {
        collapseWindow('right');
    }
}

4. 数据持久化

// 保存位置到本地存储
const position = {
    left: searchContainer.style.left,
    top: searchContainer.style.top
};
localStorage.setItem('erpSearchPosition', JSON.stringify(position));

// 保存折叠状态
const collapseState = {
    isCollapsed: true,
    side: edge,
    position: collapseStatePosition
};
localStorage.setItem('erpSearchCollapseState', JSON.stringify(collapseState));

5. API调用

// 发送供应商搜索请求
const response = await fetch(apiUrl, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    body: JSON.stringify(requestData),
    credentials: 'include' // 包含cookie
});

使用说明

  1. 激活脚本:在Tampermonkey中安装并启用脚本
  2. 显示窗口:访问ERP相关页面时,窗口会自动出现在右上角
  3. 搜索供应商
    • 点击窗口展开(或鼠标悬停自动展开)
    • 在搜索框中输入供应商信息
    • 点击"搜索"按钮
    • 供应商名称会自动复制到剪贴板
  4. 查看备注:搜索后自动显示供应商备注信息(如有)
  5. 窗口管理
    • 拖拽标题栏移动窗口位置
    • 鼠标离开后自动折叠到边缘
    • 再次鼠标悬停可展开窗口

注意事项

  • 脚本需要访问ERP系统的API,确保已登录ERP系统
  • 自动复制功能可能需要浏览器的剪贴板权限
  • 窗口位置和状态会保存在浏览器的localStorage中
  • 如遇功能异常,请检查浏览器控制台是否有错误信息

更新日志

  • 版本 2.3:修复供应商名称处理

    • 修复正则表达式,支持中英文括号
    • 调整正则表达式为:/[()()][^()()]*新[^()()]*[()()]/gi
    • 确保正确处理包含中文括号的供应商名称
    • 更新脚本版本号和描述
  • 版本 2.2:优化复制按钮功能

    • 删除退货进程中的"查看"div元素
    • 处理供应商名称,删除括号及括号内的"新"字(大小写都算)
    • 将处理后的供应商名称与退货单号连接
    • 优化复制按钮显示,仅保留复制按钮
    • 更新脚本版本号和描述
  • 版本 2.1:OpenUserJS平台适配

    • 更新脚本元数据,适配OpenUserJS平台要求
    • 统一作者名称为yiwaima
    • 添加OpenUserJS相关URL配置
    • 优化脚本描述和功能说明
  • 版本 2.0:增强功能版本

    • 添加表格复制按钮功能,支持一键复制退货单号
    • 优化按钮样式,与现有UI保持一致
    • 添加自动选择表格行和勾选复选框功能
    • 支持多种表格结构
    • 修复JSON解析和数据提取问题
  • 版本 1.0:核心功能完善

    • 实现浮动搜索窗口和拖拽功能
    • 添加边缘吸附和自动折叠功能
    • 实现供应商搜索和备注获取
    • 支持状态记忆功能
  • 版本 0.1:初始版本发布

    • 实现基本的搜索功能和窗口交互
    • 添加边缘吸附和自动折叠功能
    • 支持供应商备注获取和自动复制功能
    • 实现位置记忆功能
    • 添加MIT许可证声明

ERP 退货单据图片上传工具脚本信息

基本信息

属性 说明
脚本名称 ERP 退货单据图片上传工具
作者 yiwaima
版本 1.1
许可证 MIT
适用网站 https://www.erp321.com/app/scm/purchaseout/purchaseout.aspx
脚本类型 Tampermonkey 用户脚本
OpenUserJS地址 https://openuserjs.org/scripts/yiwaima/ERP_退货单据图片上传工具

功能描述

该脚本是一个为ERP系统设计的退货单据图片上传工具,提供了以下核心功能:

1. 浮动图片上传窗口

  • 在ERP页面右上角创建一个可拖拽的图片上传窗口
  • 支持拖放图片上传
  • 支持PNG、JPG、GIF格式图片

2. 窗口交互功能

  • 拖拽定位:通过标题栏可以自由拖动窗口到任意位置
  • 边缘吸附:当窗口靠近屏幕边缘时自动吸附并折叠
  • 自动折叠:鼠标离开窗口后自动检查是否需要吸附到边缘
  • 状态记忆:分别记忆窗口展开和折叠状态的位置,下次使用时恢复

3. 图片拖放上传

  • 支持将图片直接拖放到窗口中
  • 提供拖放视觉反馈
  • 自动处理拖放事件

4. 自动输入和搜索

  • 从图片名称中提取退货单号
  • 自动填充退货单号到搜索框
  • 自动点击搜索按钮

5. 自动选择表格行

  • 搜索完成后自动选中表格第一行数据
  • 自动勾选目标行的复选框
  • 智能识别数据行,排除操作按钮行和表头
  • 支持多种表格结构

6. 质检报告创建和图片上传

  • 自动创建质检报告
  • 获取图片上传URL
  • 上传图片到服务器
  • 保存图片信息到ERP系统

技术实现

1. 界面构建

// 创建可拖动的悬浮窗口
function createDragWindow() {
    const dragWindow = document.createElement('div');
    dragWindow.id = 'image-drag-window';
    dragWindow.innerHTML = `
        <div class="drag-header">
            <span>退货单据上传</span>
        </div>
        <div class="drag-content">
            <div class="drop-area">
                <p>将图片拖放到此处</p>
                <p class="hint">支持 PNG、JPG、GIF 格式</p>
            </div>
        </div>
    `;
    // 添加CSS样式和事件监听
    // ...
}

2. 拖放功能实现

// 处理文件拖放
function handleDrop(e) {
    const dt = e.dataTransfer;
    const files = dt.files;
    processFiles(files);
}

3. 自动输入和搜索

// 自动输入退货单号并点击搜索按钮
async function autoInputAndSearch(ioId) {
    // 查找并填充退货单号输入框
    // 点击搜索按钮
    // ...
}

4. 自动选择表格行

// 独立的行选择和复选框勾选函数
function selectFirstRowAndCheckbox(doc) {
    // 查找表格
    // 识别表头和数据行
    // 选择并勾选第一行
    // ...
}

5. API调用和数据处理

// 发送HTTP请求获取SKU数据
async function fetchSkuData(returnOrderId, orderId) {
    // 构建请求URL和参数
    // 发送请求并处理响应
    // ...
}

使用说明

  1. 激活脚本:在Tampermonkey中安装并启用脚本
  2. 显示窗口:访问ERP退货单据页面时,窗口会自动出现在右上角
  3. 上传图片
    • 点击窗口展开(或鼠标悬停自动展开)
    • 将图片拖放到窗口的虚线区域
    • 脚本会自动处理图片上传
  4. 自动操作
    • 从图片名称中提取退货单号
    • 自动填充到搜索框并点击搜索
    • 自动选中表格第一行并勾选复选框
    • 自动创建质检报告并上传图片
  5. 窗口管理
    • 拖拽标题栏移动窗口位置
    • 鼠标离开后自动折叠到边缘
    • 再次鼠标悬停可展开窗口

注意事项

  • 脚本需要访问ERP系统的API,确保已登录ERP系统
  • 图片名称需要符合特定格式:{货主名称}{退货单号}.{开单单号}.{格式}
  • 自动操作需要页面元素结构保持稳定
  • 如遇功能异常,请检查浏览器控制台是否有错误信息

更新日志

  • 版本 1.2:增强功能版本

    • 添加多个开单单号支持,当开单单号中含有"+"号时自动生成多个备注并用"+"连接
    • 修复文件名解析问题,支持开单单号包含"+"号和文件扩展名前有逗号的情况
    • 优化正则表达式逻辑,提高文件名匹配成功率
    • 更新脚本版本号和描述信息
  • 版本 1.1:OpenUserJS平台适配

    • 更新脚本元数据,适配OpenUserJS平台要求
    • 统一作者名称为yiwaima
    • 添加OpenUserJS相关URL配置
    • 优化脚本描述和功能说明
    • 添加自动选择表格行和勾选复选框功能
  • 版本 1.0:初始版本发布

    • 实现浮动图片上传窗口和拖拽功能
    • 添加图片拖放上传功能
    • 实现自动输入和搜索功能
    • 添加质检报告创建和图片上传功能
    • 支持状态记忆功能
    • 添加MIT许可证声明