Files
inventory/templates/edit.html
wangbeihong 10da4c2859 feat:集成 LCSC 产品 API 用于袋子管理
- 增加了 LCSC API 集成,可利用 app_id、access_key 和 secret_key 获取产品详情。
- 实现了用于安全 API 请求的一次性和签名生成。
- 通过新端点提升包容量管理,更新插槽容量。
- 更新界面,支持 LCSC 产品直接导入袋口。
- 改进了 API 响应和用户输入验证的错误处理。
- 重构箱子渲染逻辑,以适应新的包包功能和展示产品详情。
- 为与 LCSC 产品信息相关的新 UI 元素添加了 CSS 样式。
- 更新了 AI 设置页面,包含了 LCSC API 配置选项。
2026-03-12 13:46:28 +08:00

108 lines
4.1 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>编辑元件</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<header class="hero slim">
<div>
<h1>{{ box.name }} - 编号 {{ slot_code }}</h1>
<p>步骤: 填写核心字段 -> 检查数量 -> 保存</p>
</div>
<div class="hero-actions">
<a class="btn btn-light" href="{{ url_for('search_page', q=search_query) if search_query else url_for('search_page') }}">返回快速搜索</a>
<a class="btn btn-light" href="{{ url_for('stats_page') }}">统计页</a>
<a class="btn btn-light" href="{{ url_for('view_box', box_id=box.id) }}">返回宫格</a>
</div>
</header>
<main class="container">
{% if error %}
<p class="alert">{{ error }}</p>
{% endif %}
{% if notice %}
<p class="notice">{{ notice }}</p>
{% endif %}
<div class="entry-shell">
<section class="entry-main">
<form class="panel form-grid" method="post">
<input type="hidden" name="q" value="{{ search_query or '' }}">
<label>
料号 *
<input type="text" name="part_no" required value="{{ component.part_no if component else '' }}" aria-label="料号" placeholder="如 STM32F103C8T6">
</label>
<label>
名称 *
<input type="text" name="name" required value="{{ component.name if component else '' }}" aria-label="名称" placeholder="如 MCU STM32F103C8T6">
</label>
<label>
规格
<input type="text" name="specification" value="{{ component.specification if component else '' }}" placeholder="如 Cortex-M3 / LQFP-48">
</label>
<label>
数量
<input type="number" name="quantity" min="0" value="{{ component.quantity if component else 0 }}">
</label>
<label class="full">
备注
<textarea name="note" rows="3" placeholder="如 LCSC item 9243">{{ component.note if component else '' }}</textarea>
</label>
<div class="actions full">
<button class="btn" type="submit" name="action" value="save">保存</button>
{% if component %}
{% if component.is_enabled %}
<button class="btn btn-light" type="submit" name="action" value="toggle_disable">停用</button>
{% else %}
<button class="btn btn-light" type="submit" name="action" value="toggle_enable">启用</button>
{% endif %}
<button class="btn btn-danger" type="submit" name="action" value="delete" onclick="return confirm('确认删除这个元件记录吗?')">删除</button>
{% endif %}
</div>
</form>
</section>
<aside class="entry-sidebar">
<section class="panel quick-inbound-panel">
<h2>立创编号入库</h2>
<p class="hint">当前编辑位置: {{ slot_code }}。仅支持粘贴立创商品详情页链接,系统会自动提取 itemId 并查询。</p>
<form class="form-grid" method="post" action="{{ url_for('lcsc_import_to_edit_slot', box_id=box.id, slot=slot) }}">
<label>
立创商品详情页链接
<input type="text" name="lcsc_product_id" required placeholder="如 https://item.szlcsc.com/23913.html">
</label>
<label>
数量
<input type="number" name="quantity" min="0" value="0">
</label>
<div class="actions full">
<button class="btn" type="submit">拉取并写入当前位</button>
<a class="btn btn-light" href="{{ url_for('ai_settings_page') }}">接口参数</a>
</div>
</form>
</section>
<section class="panel entry-guide">
<h2>轻量入库规范</h2>
<p class="hint">先保证可检索,再补充关键参数,不追求一次填很全。</p>
<ul class="guide-list">
<li>必填: 料号(part_no) + 名称(name) + 数量(quantity)</li>
<li>建议: 规格(specification)写 2-4 个关键参数</li>
<li>备注(note): 来源编号或链接,如 LCSC item 9243</li>
</ul>
<pre class="guide-code">料号: STM32F103C8T6
名称: MCU STM32F103C8T6
规格: Cortex-M3 / 64KB Flash / LQFP-48
数量: 10
备注: LCSC item 9243</pre>
</section>
</aside>
</div>
</main>
</body>
</html>