feat: 添加搜索功能的优先级选择、AI 开关和最低展示分数控制,优化用户体验
This commit is contained in:
@@ -35,6 +35,22 @@
|
||||
<option value="{{ key }}" {% if fuzziness == key %}selected{% endif %}>{{ profile.label }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<label class="priority-label">优先级:
|
||||
<select id="priority-select" name="priority" aria-label="搜索优先级">
|
||||
<option value="name" {% if priority == 'name' %}selected{% endif %}>名称优先</option>
|
||||
<option value="part_no" {% if priority == 'part_no' %}selected{% endif %}>料号优先</option>
|
||||
</select>
|
||||
</label>
|
||||
<!-- AI 开关:用户可选择是否启用 AI 解析,状态保存在 localStorage -->
|
||||
<input type="hidden" id="use-ai-hidden" name="use_ai" value="1">
|
||||
<label class="ai-toggle">
|
||||
<input type="checkbox" id="use-ai-toggle" checked>
|
||||
启用 AI 解析
|
||||
</label>
|
||||
<!-- 最低展示分数控制(本地保存) -->
|
||||
<label class="min-score-label">最低展示分数:
|
||||
<input id="min-score-input" type="number" name="min_score" step="0.1" min="0" value="{{ min_display_score }}" style="width:80px">
|
||||
</label>
|
||||
<button class="btn" type="submit">搜索</button>
|
||||
</form>
|
||||
<div class="search-examples">
|
||||
@@ -195,6 +211,47 @@
|
||||
});
|
||||
}
|
||||
|
||||
// AI 开关行为:从 localStorage 读取用户偏好并在提交时保存
|
||||
var useAiToggle = document.getElementById('use-ai-toggle');
|
||||
var useAiHidden = document.getElementById('use-ai-hidden');
|
||||
var minScoreInput = document.getElementById('min-score-input');
|
||||
var prioritySelect = document.getElementById('priority-select');
|
||||
try {
|
||||
var saved = localStorage.getItem('use_ai_enabled');
|
||||
if (saved !== null) {
|
||||
var enabled = saved === '1' || saved === 'true';
|
||||
if (useAiToggle) useAiToggle.checked = enabled;
|
||||
if (useAiHidden) useAiHidden.value = enabled ? '1' : '0';
|
||||
}
|
||||
var savedScore = localStorage.getItem('search_min_score');
|
||||
if (savedScore !== null && minScoreInput) {
|
||||
minScoreInput.value = savedScore;
|
||||
}
|
||||
var savedPriority = localStorage.getItem('search_priority');
|
||||
if (savedPriority !== null && prioritySelect) {
|
||||
try { prioritySelect.value = savedPriority; } catch (e) {}
|
||||
}
|
||||
} catch (e) {
|
||||
// ignore localStorage errors
|
||||
}
|
||||
if (searchForm) {
|
||||
searchForm.addEventListener('submit', function () {
|
||||
var enabled = !!(useAiToggle && useAiToggle.checked);
|
||||
if (useAiHidden) useAiHidden.value = enabled ? '1' : '0';
|
||||
try {
|
||||
if (minScoreInput) {
|
||||
localStorage.setItem('search_min_score', String(minScoreInput.value));
|
||||
}
|
||||
if (prioritySelect) {
|
||||
localStorage.setItem('search_priority', String(prioritySelect.value));
|
||||
}
|
||||
} catch (e) {}
|
||||
try {
|
||||
localStorage.setItem('use_ai_enabled', enabled ? '1' : '0');
|
||||
} catch (e) {}
|
||||
});
|
||||
}
|
||||
|
||||
document.querySelectorAll('[data-example]').forEach(function (button) {
|
||||
button.addEventListener('click', function () {
|
||||
if (!searchInput || !searchForm) {
|
||||
|
||||
Reference in New Issue
Block a user