eext-jiepei-helper/iframe/order_iframe.html
2025-06-12 23:15:39 +08:00

1867 lines
97 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>捷配PCB下单</title>
<link rel="stylesheet" href="/iframe/css/index.css">
<style>
/* 新增的禁用样式 */
.item.disabled {
cursor: not-allowed;
opacity: 0.6; /* 降低透明度以示禁用 */
}
.item.disabled span {
border-color: #e2e8f0; /* 更柔和的边框颜色 */
background-color: #f8fafc; /* 浅灰色背景 */
color: #94a3b8; /* 灰色文字 */
pointer-events: none; /* 确保span内部元素也无法点击 */
}
/* 移除 hover 和 checked 效果 */
.item.disabled span:hover {
border-color: #e2e8f0;
background-color: #f8fafc;
color: #94a3b8;
}
.item.disabled input.peer:checked + span {
border-color: #e2e8f0; /* 保持非选中状态的边框色 */
background-color: #f8fafc; /* 保持非选中状态的背景色 */
color: #94a3b8; /* 保持非选中状态的文字色 */
}
em.example-color {
width: 12px;
height: 12px;
margin-right: 4px;
display: inline-block;
border: 1px gray solid;
border-radius: inherit;
}
::-webkit-scrollbar {
height: 0.25rem;
width: 0.25rem;
}
::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
}
*:focus {
outline: none;
}
</style>
</head>
<body class="bg-gray-100 p-4 sm:p-8">
<div id="Preset-panel" class="bg-white rounded-lg shadow-md p-4 sm:p-6 max-w-4xl mx-auto mb-2">
<div class="flex justify-between items-center mb-4 border-b pb-2">
<h2 class="text-lg sm:text-xl font-semibold text-gray-800">订单工艺预设</h2>
</div>
<div class="mb-4">
<div class="flex items-center space-x-2">
<label class="item cursor-pointer">
<input class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700" id="PresetName" type="text" placeholder="请输入预设名称">
</label>
<label class="item cursor-pointer">
<button class="w-full sm:w-auto px-2 py-1 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors duration-200 ease-in-out" id="CreatePreset">
新建预设
</button>
</label>
</div>
</div>
<div>
<div class="flex flex-wrap gap-1" id="PresetList">
<label class="item cursor-pointer">
<input class="hidden peer" type="radio" value="0">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">默认</span>
</label>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow-md p-4 sm:p-6 max-w-4xl mx-auto">
<div class="flex justify-between items-center mb-4 border-b pb-2">
<h2 class="text-lg sm:text-xl font-semibold text-gray-800">PCB 基本信息</h2>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1">板材类别</label>
<div class="grid grid-cols-3 sm:grid-cols-6 gap-1.5" id="proCategory">
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="fr4Item">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="FR-4" class="mr-1" src="/iframe/img/img_pro_FR4.png"> FR-4
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="aluminumItem">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="铝基板" class="mr-1" src="/iframe/img/img_pro_Aluminum.png">
铝基板
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="copperItem">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="铜基板" class="mr-1" src="/iframe/img/img_pro_Copper.png"> 铜基板
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="rogersItem">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="高频/混压" class="mr-1" src="/iframe/img/img_pro_Rogers.png">
高频/混压
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="hdiItem">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="HDI" class="mr-1" src="/iframe/img/img_pro_HDI.png"> HDI
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="cem1Item">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="CEM-1" class="mr-1" src="/iframe/img/img_pro_CEM1.png">
CEM-1
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="22fItem">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="22F" class="mr-1" src="/iframe/img/img_pro_22F.png"> 22F
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="fr1Item">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="FR-1" class="mr-1" src="/iframe/img/img_pro_FR1.png"> FR-1
</span>
</label>
<label class="item flex items-center justify-center cursor-pointer">
<input class="hidden peer" name="proCategory" type="radio" value="cem3Item">
<span
class="block flex items-center justify-center p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700 w-full h-full">
<img alt="CEM-3" class="mr-1" src="/iframe/img/img_pro_CEM3.png">
CEM-3
</span>
</label>
</div>
</div>
<div class="mb-4" id="MixedCategory-container">
<label class="block text-gray-700 text-sm mb-1">混压类别</label>
<div class="flex items-center space-x-2" id="MixedCategory">
<label class="item cursor-pointer">
<input class="hidden peer" name="MixedCategory" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">纯压(罗杰斯)</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="MixedCategory" type="radio" value="2">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">混压(罗杰斯+FR-4)</span>
</label>
</div>
</div>
<div class="mb-4" id="HDIBuilds-container">
<label class="block text-gray-700 text-sm mb-1">阶数</label>
<div class="flex items-center space-x-2" id="HDIBuilds">
<label class="item cursor-pointer">
<input class="hidden peer" name="HDIBuilds" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">1阶</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HDIBuilds" type="radio" value="2">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">2阶</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HDIBuilds" type="radio" value="3">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">3阶</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">板子层数</label>
<div class="flex flex-wrap gap-1" id="BoardLayers"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1">
板子大小
<button id="selectBoard" class="px-2 py-0.5 border border-grey-300 rounded-md text-xs hover:border-blue-500 transition-colors duration-200 ease-in-out">选择板框</button>
</label>
<div class="flex flex-wrap items-center gap-x-1 sm:gap-x-2 gap-y-1 text-sm">
<span class="text-gray-700">长(x)</span>
<input
class="w-16 p-1 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm"
id="BoardWidth" type="number" value="10"> <span class="text-gray-700">CM × 宽(y)</span>
<input
class="w-16 p-1 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm"
id="BoardHeight" type="number" value="10"> <span class="text-gray-700">CM数量</span>
<input
class="w-16 p-1 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm"
id="num" type="number" value="3"> <span class="text-gray-700">PCS</span>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1">
总面积 <span class="font-bold text-blue-600 text-sm" id="totalArea">0.030m²</span>
</label>
</div>
<div class="mb-4"><label class="block text-gray-700 text-sm mb-1">出货方式</label>
<div class="flex items-center space-x-2" id="BoardType"><label class="item cursor-pointer">
<input class="hidden peer" name="BoardType" type="radio" value="pcs">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">单片出货</span>
</label>
<label class="item disabled">
<input class="hidden peer" name="BoardType" type="radio" value="set">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">客户拼版</span>
</label>
<label class="item disabled">
<input class="hidden peer" name="BoardType" type="radio" value="jpset">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">捷配代拼</span>
</label>
</div>
</div>
<div>
<label class="block text-gray-700 text-sm mb-1">订单阶段</label>
<div class="flex items-center space-x-2" id="OrderStage">
<label class="item cursor-pointer">
<input class="hidden peer" name="OrderStage" type="radio" value="0">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">研发打样</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="OrderStage" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">量产试样</span>
</label>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow-md p-4 sm:p-6 max-w-4xl mx-auto mt-2">
<div class="flex justify-between items-center mb-4 border-b pb-2">
<h2 class="text-lg sm:text-xl font-semibold text-gray-800">PCB 工艺信息</h2>
</div>
<div class="mb-4" id="AluminumType-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">基板结构</label>
<div class="flex flex-wrap gap-1" id="AluminumType"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">板子厚度</label>
<div class="flex flex-wrap gap-1" id="BoardThickness"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">铜箔厚度(外层)</label>
<div class="flex flex-wrap gap-1" id="CopperThickness"></div>
</div>
<div class="mb-4" id="InnerCopperThickness-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">铜箔厚度(内层)</label>
<div class="flex flex-wrap gap-1" id="InnerCopperThickness"></div>
</div>
<div class="mb-4" id="CopperStructure-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">铜基结构</label>
<div class="flex flex-wrap gap-1" id="CopperStructure">
<label class="item cursor-pointer">
<input class="hidden peer" name="CopperStructure" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">热电分离</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="CopperStructure" type="radio" value="2" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">普通导热</span>
</label>
</div>
</div>
<div class="mb-4" id="Invoice-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">导热系数</label>
<div class="flex flex-wrap gap-1" id="Invoice"></div>
</div>
<div class="mb-4" id="WithstandVoltage-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">板材耐压值</label>
<div class="flex flex-wrap gap-1" id="WithstandVoltage">
<label class="item cursor-pointer">
<input class="hidden peer" name="WithstandVoltage" type="radio" value="3000">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">AC3000V</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="WithstandVoltage" type="radio" value="4000">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">AC4000V</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">阻焊颜色</label>
<div class="flex flex-wrap gap-1" id="SolderColor"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">字符颜色</label>
<div class="flex flex-wrap gap-1" id="FontColor"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">最小线宽/线距</label>
<div class="flex flex-wrap gap-1" id="LineWeight"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">最小孔径</label>
<div class="flex flex-wrap gap-1" id="Vias"></div>
</div>
<div class="mb-4" id="SolderCover-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">阻焊覆盖</label>
<div class="flex flex-wrap gap-1" id="SolderCover"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">测试方法</label>
<div class="flex flex-wrap gap-1" id="FlyingProbe"></div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">焊盘表面处理</label>
<div class="flex flex-wrap gap-1" id="SurfaceFinish"></div>
</div>
<div class="mb-4" id="ImGoldThinckness-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">沉金厚度</label>
<div class="flex flex-wrap gap-1" id="ImGoldThinckness">
<label class="item cursor-pointer">
<input class="hidden peer" name="ImGoldThinckness" type="radio" value="1" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">1U"</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ImGoldThinckness" type="radio" value="2">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">2U"</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ImGoldThinckness" type="radio" value="3">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">3U"</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ImGoldThinckness" type="radio" value="4">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">4U"</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ImGoldThinckness" type="radio" value="5">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">5U"</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">成型方式</label>
<div class="flex flex-wrap gap-1" id="FormingType">
<label class="item cursor-pointer">
<input class="hidden peer" name="FormingType" type="radio" value="mechanical" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">机械成型</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="FormingType" type="radio" value="module">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">模具成型</span>
</label>
</div>
</div>
<div class="mb-4" id="ImpedanceSize-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">阻抗</label>
<div class="flex flex-wrap gap-1" id="ImpedanceSize">
<label class="item cursor-pointer">
<input class="hidden peer" name="ImpedanceSize" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700"></span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ImpedanceSize" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700"></span>
</label>
</div>
</div>
<div class="mb-4" id="StackedStructure-container" style="display: none;">
<label class="block text-gray-700 text-sm mb-1 flex items-center">叠层结构</label>
<div class="flex flex-wrap gap-1" id="StackedStructure">
<label class="item disabled">
<span class="text-red-500">🚧 暂不支持 🚧</span>
</label>
</div>
</div>
<div class="mb-4" id="HalfHole-container">
<label class="block text-gray-700 text-sm mb-1 flex items-center">半孔</label>
<div class="flex flex-wrap gap-1" id="HalfHole">
<label class="item cursor-pointer">
<input class="hidden peer" name="HalfHole" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700"></span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HalfHole" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">一边</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HalfHole" type="radio" value="2">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">两边</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HalfHole" type="radio" value="3">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">三边</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HalfHole" type="radio" value="4">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">四边</span>
</label>
</div>
</div>
<div id="HoleThickness_-container">
<label class="block text-gray-700 text-sm mb-1 flex items-center">孔铜</label>
<div class="flex flex-wrap gap-1" id="HoleThickness_">
<label class="item cursor-pointer">
<input class="hidden peer" name="HoleThickness_" type="radio" value="18" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">18um</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HoleThickness_" type="radio" value="20">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">20um</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HoleThickness_" type="radio" value="25">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">25um</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HoleThickness_" type="radio" value="30">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">30um</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="HoleThickness_" type="radio" value="35">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">35um</span>
</label>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow-md p-4 sm:p-6 max-w-4xl mx-auto mt-2">
<div class="flex justify-between items-center mb-4 border-b pb-2">
<h2 class="text-lg sm:text-xl font-semibold text-gray-800">PCB 特殊工艺</h2>
</div>
<div>
<div class="flex items-center justify-center h-16 bg-gray-100 border border-gray-300 rounded-md">
<span class="text-gray-500">🚧 暂不支持特殊工艺预设 🚧</span>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow-md p-4 sm:p-6 max-w-4xl mx-auto mt-2">
<div class="flex justify-between items-center mb-4 border-b pb-2">
<h2 class="text-lg sm:text-xl font-semibold text-gray-800">个性化服务</h2>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">序列号/二维码</label>
<div class="flex flex-wrap gap-1" id="SerialNumber_">
<label class="item disabled">
<span class="text-red-500">🚧 暂不支持 🚧</span>
</label>
<!--<label class="item cursor-pointer">
<input class="hidden peer" name="SerialNumber_" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">无要求</span>
</label>
<label class="item disabled">
<input class="hidden peer" name="SerialNumber_" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">序列号</span>
</label>
<label class="item disabled">
<input class="hidden peer" name="SerialNumber_" type="radio" value="2">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">固定二维码</span>
</label>
<label class="item disabled">
<input class="hidden peer" name="SerialNumber_" type="radio" value="3">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">动态二维码</span>
</label>
<label class="item disabled">
<input class="hidden peer" name="SerialNumber_" type="radio" value="4">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">序列号+动态二维码</span>
</label>-->
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">品质赔付</label>
<div class="flex flex-wrap gap-1" id="QualityCompensation">
<label class="item cursor-pointer">
<input class="hidden peer" name="QualityCompensation" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">按标品合同处理</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="QualityCompensation" type="radio" value="2">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">元器件全额赔付(优品专享)</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">四线低阻过孔</label>
<div class="flex flex-wrap gap-1" id="LowResistanceTest">
<label class="item cursor-pointer">
<input class="hidden peer" name="LowResistanceTest" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">无要求</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="LowResistanceTest" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">全部测试</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">确认生产稿</label>
<div class="flex flex-wrap gap-1" id="ProductFileSure">
<label class="item cursor-pointer">
<input class="hidden peer" name="ProductFileSure" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">需要</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ProductFileSure" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">不需要</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">出货报告</label>
<div class="flex flex-wrap gap-1" id="ReportList">
<label class="item disabled">
<span class="text-gray-500">🚧 暂不支持 🚧</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">报告材质</label>
<div class="flex flex-wrap gap-1" id="ReportMaterial">
<label class="item cursor-pointer">
<input class="hidden peer" name="ReportMaterial" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">电子</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="ReportMaterial" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">纸质</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">锣边外形公差</label>
<div class="flex flex-wrap gap-1" id="GongBoundaryTolerance">
<label class="item cursor-pointer">
<input class="hidden peer" name="GongBoundaryTolerance" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">普锣±0.2mm</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="GongBoundaryTolerance" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">精锣±0.1mm</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">板面外观要求</label>
<div class="flex flex-wrap gap-1" id="PanelAppearanceRequire">
<label class="item cursor-pointer">
<input class="hidden peer" name="PanelAppearanceRequire" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">IPC二级</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="PanelAppearanceRequire" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">极致外观</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">隔白纸</label>
<div class="flex flex-wrap gap-1" id="WhitePaperService">
<label class="item cursor-pointer">
<input class="hidden peer" name="WhitePaperService" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">不隔纸</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="WhitePaperService" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">隔纸</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="block text-gray-700 text-sm mb-1 flex items-center">生产编号</label>
<div class="flex flex-wrap gap-1" id="IsNoneFont">
<label class="item cursor-pointer">
<input class="hidden peer" name="IsNoneFont" type="radio" value="0" checked="checked">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">加生产编号</span>
</label>
<label class="item cursor-pointer">
<input class="hidden peer" name="IsNoneFont" type="radio" value="1">
<span
class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">不加生产编号</span>
</label>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow-md p-4 sm:p-6 max-w-4xl mx-auto mt-2">
<div class="flex justify-between items-center mb-4 border-b pb-2">
<h2 class="text-lg sm:text-xl font-semibold text-gray-800">操作</h2>
</div>
<div>
<button
class="px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors duration-200 ease-in-out"
id="submitOrder">
前往下单
</button>
<button
class="px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors duration-200 ease-in-out"
id="savePreset">
保存预设
</button>
<button
class="px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 transition-colors duration-200 ease-in-out"
id="deletePreset">
删除预设
</button>
</div>
</div>
<script>
const boardLayersOptions = {
fr4Item: ['1', '2', '4', '6', '8', '10', '12', '14', '16', '18', '20', '22', '24', '26', '28', '30', '32'],
aluminumItem: ['1', '2'],
copperItem: ['1', '2', '4'],
rogersItem: {
'1': ['2', '4', '6', '8'],
'2': ['4', '6', '8']
},
hdiItem: {
'1': ['4', '6', '8', '10', '12', '14', '16', '18', '20'],
'2': ['6', '8', '10', '12', '14', '16', '18', '20'],
'3': ['8', '10', '12', '14', '16', '18', '20']
},
cem1Item: ['1'],
'22fItem': ['1'],
fr1Item: ['1'],
cem3Item: ['1']
};
const aluminumTypeOptions = {
aluminumItem: [['1', '(1)a', 'FR-4+铝基混压,铝基材在底层'], ['2', '(2)a', '芯板为铝材,顶底层为走线']],
copperItem: [['3', '(3)a', 'FR-4+铜基混压,铜基材在底层'], ['4', '(4)a', '芯板为铜基,顶底层为走线']],
}
const boardThicknessOptions = {
fr4Item: {
'1': ['0.6', '0.8', '1.0', '1.2', '1.6', '2.0'],
'2': ['0.4', '0.6', '0.8', '1.0', '1.2', '1.6', '2.0', '2.4', '3.0', '3.6', '4.0'],
'4': ['0.4', '0.6', '0.8', '1.0', '1.2', '1.6', '2.0', '2.4', '2.5', '3.0', '3.2'],
'6': ['0.8', '1.0', '1.2', '1.6', '2.0', '2.5', '3.0'],
'8': ['1.2', '1.6', '2.0', '2.5'],
'10': ['1.2', '1.6', '2.0', '2.5'],
'12': ['1.6', '2.0', '2.5'],
'14': ['1.6', '2.0', '2.5', '3.0'],
'16': ['2.0', '2.5', '3.0', '3.2'],
'18': ['2.0', '2.5', '3.0', '3.2'],
'20': ['2.0', '2.5', '3.0', '3.2'],
'22': ['2.5', '3.0', '3.2'],
'24': ['2.5', '3.0', '3.2'],
'26': ['2.5', '3.0', '3.2'],
'28': ['2.5', '3.0', '3.2'],
'30': ['2.5', '3.0', '3.2'],
'32': ['2.5', '3.0', '3.2'],
},
aluminumItem: {
'1': ['0.4', '0.6', '0.8', '1.0', '1.2', '1.6', '2.0', '2.5', '3.0'],
'2': ['0.8', '1.0', '1.2', '1.6', '2.0'],
},
copperItem: {
'1': ['1.0', '1.2', '1.5', '1.6', '2.0'],
'2': ['1.0', '1.2', '1.5', '1.6', '2.0'],
'4': ['1.0', '1.2', '1.5', '1.6', '2.0'],
},
rogersItem: {
'1': {
'2': ['0.203', '0.254', '0.305', '0.335', '0.406', '0.422', '0.508', '0.762', '0.813', '1.524'],
'4': ['0.4', '0.6', '0.8', '1.0', '1.2', '1.6', '2.0', '2.4'],
'6': ['1.0', '1.2', '1.6', '2.0', '2.4'],
'8': ['1.0', '1.2', '1.6', '2.0', '2.4', '3.0']
},
'2': {
'4': ['0.4', '0.6', '0.8', '1.0', '1.2', '1.6', '2.0', '2.4'],
'6': ['1.0', '1.2', '1.6', '2.0', '2.4'],
'8': ['1.0', '1.2', '1.6', '2.0', '2.4', '3.0']
}
},
hdiItem: {
'1': {
'4': ['0.6', '0.8', '1.0', '1.2', '1.6', '2.0'],
'6': ['0.8', '1.0', '1.2', '1.6', '2.0', '2.4', '2.5'],
'8': ['1.0', '1.2', '1.6', '2.0', '2.4', '2.5'],
'10': ['1.2', '1.6', '2.0', '2.4', '2.5'],
'12': ['1.6', '2.0', '2.4', '2.5'],
'14': ['1.6', '2.0', '2.4', '2.5', '3.0'],
'16': ['2.0', '2.4', '2.5', '3.0', '3.2'],
'18': ['2.0', '2.4', '2.5', '3.0', '3.2'],
'20': ['2.0', '2.4', '2.5', '3.0', '3.2']
},
'2': {
'6': ['0.8', '1.0', '1.2', '1.6', '2.0', '2.4', '2.5'],
'8': ['1.0', '1.2', '1.6', '2.0', '2.4', '2.5'],
'10': ['1.2', '1.6', '2.0', '2.4', '2.5'],
'12': ['1.6', '2.0', '2.4', '2.5'],
'14': ['1.6', '2.0', '2.4', '2.5', '3.0'],
'16': ['2.0', '2.4', '2.5', '3.0', '3.2'],
'18': ['2.0', '2.4', '2.5', '3.0', '3.2'],
'20': ['2.0', '2.4', '2.5', '3.0', '3.2']
},
'3': {
'8': ['1.0', '1.2', '1.6', '2.0', '2.4', '2.5'],
'10': ['1.2', '1.6', '2.0', '2.4', '2.5'],
'12': ['1.6', '2.0', '2.4', '2.5'],
'14': ['1.6', '2.0', '2.4', '2.5', '3.0'],
'16': ['2.0', '2.4', '2.5', '3.0', '3.2'],
'18': ['2.0', '2.4', '2.5', '3.0', '3.2'],
'20': ['2.0', '2.4', '2.5', '3.0', '3.2']
}
},
cem1Item: {
'1': ['1.0', '1.2', '1.6']
},
'22fItem': {
'1': ['1.0', '1.2', '1.6']
},
fr1Item: {
'1': ['1.0', '1.2', '1.6']
},
cem3Item: {
'1': ['1.0', '1.2']
}
}
const copperThicknessOptions = {
fr4Item: {
'1': ['1', '2'],
'2': ['1', '1.5', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'],
'4': ['1', '2', '3', '4', '5', '6', '7', '8'],
'6': ['1', '2', '3', '4'],
'8': ['1', '2'],
'10': ['1', '2'],
'12': ['1', '2'],
'14': ['1', '2'],
'16': ['1', '2'],
'18': ['1', '2'],
'20': ['1', '2'],
'22': ['1', '2'],
'24': ['1', '2'],
'26': ['1', '2'],
'28': ['1', '2'],
'30': ['1', '2'],
'32': ['1', '2']
},
aluminumItem: {
'1': ['0.4', '0.5', '0.75', '1', '2', '3'],
'2': ['1']
},
copperItem: {
'1': ['1', '2', '3', '4', '5'],
'2': ['1', '2'],
'4': ['1', '2']
},
rogersItem: {
'1': {
'2': ['1', '2'],
'4': ['1', '2'],
'6': ['1', '2'],
'8': ['1', '2']
},
'2': {
'4': ['1', '2'],
'6': ['1', '2'],
'8': ['1', '2']
}
},
hdiItem: {
'1': {
'4': ['1', '2']
},
'2': {
'6': ['1', '2']
},
'3': {
'8': ['1', '2']
}
},
cem1Item: {
'1': ['1']
},
'22fItem': {
'1': ['0.75']
},
fr1Item: {
'1': ['0.75', '1']
},
cem3Item: {
'1': ['0.5']
}
}
const innerCopperThicknessOptions = {
fr4Item: {
'4': ['0.5', '1', '2', '3', '4'],
'6': ['0.5', '1', '2', '3', '4'],
'8': ['0.5', '1', '2'],
'10': ['0.5', '1', '2'],
'12': ['0.5', '1'],
'14': ['0.5', '1'],
'16': ['0.5', '1'],
'18': ['0.5', '1'],
'20': ['0.5', '1'],
'22': ['0.5', '1'],
'24': ['0.5', '1'],
'26': ['0.5', '1'],
'28': ['0.5', '1'],
'30': ['0.5', '1'],
'32': ['0.5', '1']
},
aluminumItem: {},
copperItem: {
'4': ['1', '2']
},
rogersItem: {
'1': {
'4': ['1']
},
'2': {
'4': ['1']
}
},
hdiItem: {
'1': {
'4': ['0.5', '1']
},
'2': {
'6': ['0.5', '1']
},
'3': {
'8': ['0.5', '1']
}
},
cem1Item: {},
'22fItem': {},
fr1Item: {},
cem3Item: {}
}
const solderColorOptions = {
fr4Item: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['blue', '蓝色', '#0943c8'], ['black', '黑色', '#111'], ['yellow', '黄色', '#ffde00'], ['red', '红色', '#c81609'], ['matteblack', '哑光黑', '#333'], ['mattegreen', '哑光绿', '#46c017'], ['purple', '紫色', 'purple'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
aluminumItem: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['warmwhite', '暖白色', '#fffbd6'], ['whitesfr6ks', '高反白色', '#fff'], ['black', '黑色', '#111'], ['purple', '紫色', 'purple']],
copperItem: [['warmwhite', '暖白色', '#fffbd6'], ['black', '黑色', '#111'], ['matteblack', '哑光黑', '#333']],
rogersItem: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['blue', '蓝色', '#0943c8'], ['black', '黑色', '#111'], ['yellow', '黄色', '#ffde00'], ['red', '红色', '#c81609'], ['matteblack', '哑光黑', '#333'], ['mattegreen', '哑光绿', '#46c017'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
hdiItem: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['blue', '蓝色', '#0943c8'], ['black', '黑色', '#111'], ['yellow', '黄色', '#ffde00'], ['red', '红色', '#c81609'], ['matteblack', '哑光黑', '#333'], ['mattegreen', '哑光绿', '#46c017'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
cem1Item: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['blue', '蓝色', '#0943c8'], ['black', '黑色', '#111'], ['yellow', '黄色', '#ffde00'], ['red', '红色', '#c81609'], ['matteblack', '哑光黑', '#333'], ['mattegreen', '哑光绿', '#46c017'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
'22fItem': [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['blue', '蓝色', '#0943c8'], ['black', '黑色', '#111'], ['yellow', '黄色', '#ffde00'], ['red', '红色', '#c81609'], ['matteblack', '哑光黑', '#333'], ['mattegreen', '哑光绿', '#46c017'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
fr1Item: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['blue', '蓝色', '#0943c8'], ['black', '黑色', '#111'], ['red', '红色', '#c81609'], ['matteblack', '哑光黑', '#333'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
cem3Item: [['green', '绿色', '#007606'], ['white', '冷白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']]
}
const fontColorOptions = {
fr4Item: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
aluminumItem: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['hollowout', '镂空字符', 'transport'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
copperItem: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
rogersItem: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
hdiItem: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
cem1Item: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
'22fItem': [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
fr1Item: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']],
cem3Item: [['white', '白色', '#fff'], ['black', '黑色', '#111'], ['none', '无', 'url(\'/iframe/img/none_color.svg\') center']]
}
const invoiceOptions = {
aluminumItem: [['1', '1.0W'], ['2', '1.5W'], ['3', '2.0W'], ['4', '3.0W'], ['5', '5.0W'], ['6', '8.0W']],
copperItem: [['380', '380W'], ['3', '2.0W'], ['4', '3.0W'], ['5', '5.0W'], ['6', '8.0W']]
}
const lineWeightOptions = {
fr4Item: ['3', '3.5', '4', '5', '6', '8', '10', '20'],
aluminumItem: ['5', '10', '16', '20'],
copperItem: ['4', '5', '10', '20'],
rogersItem: ['3', '3.5', '4', '5', '6', '8', '10', '20'],
hdiItem: ['3', '3.5', '4', '5', '6', '8', '10', '20'],
cem1Item: ['4', '5', '6', '8', '10', '20'],
'22fItem': ['3', '3.5', '4', '5', '6', '8', '10', '20'],
fr1Item: ['8', '10', '20'],
cem3Item: ['20']
}
const viasOptions = {
fr4Item: ['0.15', '0.2', '0.25', '0.3', '0.35', '0.4', '0.5', '0.6', '0.7', '0.8'],
aluminumItem: ['1.0', '1.2', '1.5'],
copperItem: ['1.2', '1.5'],
rogersItem: ['0.15', '0.2', '0.25', '0.3', '0.35', '0.4', '0.5', '0.6', '0.7', '0.8'],
hdiItem: ['0.15', '0.2', '0.25', '0.3', '0.35', '0.4', '0.5', '0.6', '0.7', '0.8', '1.0', '1.2', '1.5'],
cem1Item: ['0.3', '0.35', '0.4', '0.5', '0.6', '0.7', '0.8'],
'22fItem': ['0.3', '0.35', '0.4', '0.5', '0.6', '0.7', '0.8'],
fr1Item: ['0.8'],
cem3Item: ['0.8']
}
const solderCoverOptions = {
fr4Item: [['converoil', '过孔盖油'], ['plugoil', '过孔塞油(连塞带印)'], ['aluminumplughole', '过孔塞油(铝片塞)'], ['openwindow', '过孔开窗'], ['resinplughole', '树脂塞孔']],
rogersItem: [['converoil', '过孔盖油'], ['aluminumplughole', '过孔塞油(铝片塞)'], ['openwindow', '过孔开窗'], ['resinplughole', '树脂塞孔']],
}
const flyingProbeOptions = {
fr4Item: [['full', '100%飞针测试'], ['teststand', '工程测试架']],
aluminumItem: [['aoi', '100%AOI'], ['full', '100%飞针测试'], ['teststand', '工程测试架']],
copperItem: [['aoi', '100%AOI'], ['full', '100%飞针测试'], ['teststand', '工程测试架']],
rogersItem: [['full', '100%飞针测试'], ['teststand', '工程测试架']],
hdiItem: [['full', '100%飞针测试'], ['lowresistancetest', '四线低阻测试'], ['teststand', '工程测试架']],
cem1Item: [['aoi', '100%AOI'], ['teststand', '工程测试架']],
'22fItem': [['aoi', '100%AOI']],
fr1Item: [['aoi', '100%AOI'], ['teststand', '工程测试架']],
cem3Item: [['aoi', '100%AOI'], ['teststand', '工程测试架']]
}
const surfaceFinishOptions = {
fr4Item: [['none', '裸铜'], ['haslwithlead', '有铅喷锡'], ['haslwithfree', '无铅喷锡'], ['immersiongold', '沉金'], ['osp', 'OSP'], ['immersiontin', '沉锡'], ['immersionsilver', '沉银'], ['hardgold', '电镀金'], ['eletrolyticnickelgod', '化学镍钯金'], ['immersiongoldandosp', '沉金+选择性OSP'], ['haslwithfreeandimmersiongold', '无铅喷锡+选择性沉金'], ['haslwithfreeandhardgold', '无铅喷锡+选择性电镀金']],
aluminumItem: [['none', '裸铜'], ['haslwithlead', '有铅喷锡'], ['haslwithfree', '无铅喷锡'], ['immersiongold', '沉金'], ['osp', 'OSP']],
copperItem: [['haslwithfree', '无铅喷锡'], ['immersiongold', '沉金'], ['osp', 'OSP'], ['immersiontin', '沉锡']],
rogersItem: [['immersiongold', '沉金'], ['osp', 'OSP'], ['immersiontin', '沉锡'], ['immersionsilver', '沉银']],
hdiItem: [['none', '裸铜'], ['haslwithlead', '有铅喷锡'], ['haslwithfree', '无铅喷锡'], ['immersiongold', '沉金'], ['osp', 'OSP']],
cem1Item: [['haslwithlead', '有铅喷锡'], ['haslwithfree', '无铅喷锡'], ['osp', 'OSP']],
'22fItem': [['osp', 'OSP']],
fr1Item: [['osp', 'OSP']],
cem3Item: [['osp', 'OSP']]
}
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
setupRadioGroup('proCategory', 'proCategory', 'fr4Item', updateBoardCraft);
updateBoardCraft(document.getElementById('proCategory').getValue());
setupRadioGroup('BoardLayers', 'BoardLayers', '2');
setupRadioGroup('OrderStage', 'OrderStage', '0');
setupRadioGroup('BoardType', 'BoardType', 'pcs');
document.getElementById('MixedCategory').addEventListener('change', () => {
updateBoardCraft(document.getElementById('proCategory').getValue());
});
document.getElementById('HDIBuilds').addEventListener('change', () => {
updateBoardCraft(document.getElementById('proCategory').getValue());
});
document.getElementById('BoardLayers').addEventListener('change', () => {
updateBoardCraft(document.getElementById('proCategory').getValue());
});
document.getElementById('SurfaceFinish').addEventListener('change', () => {
const selectedSurfaceFinish = document.getElementById('SurfaceFinish').getValue();
if (selectedSurfaceFinish === 'immersiongold') {
document.getElementById('ImGoldThinckness-container').style.display = 'block';
} else {
document.getElementById('ImGoldThinckness-container').style.display = 'none';
}
});
// Function to calculate and update total area
function updateTotalArea() {
const boardHeight = parseFloat(document.getElementById('BoardHeight').value);
const boardWidth = parseFloat(document.getElementById('BoardWidth').value);
const num = parseInt(document.getElementById('num').value);
if (!isNaN(boardHeight) && !isNaN(boardWidth) && !isNaN(num)) {
// Convert cm² to m² (1 m² = 10000 cm²)
const totalAreaValue = (boardHeight * boardWidth * num / 10000).toFixed(3);
document.getElementById('totalArea').textContent = `${totalAreaValue}`;
} else {
document.getElementById('totalArea').textContent = '0.000m²'; // Default or error state
}
}
// Add event listeners to input fields to update total area dynamically
document.getElementById('BoardHeight').addEventListener('input', updateTotalArea);
document.getElementById('BoardWidth').addEventListener('input', updateTotalArea);
document.getElementById('num').addEventListener('input', updateTotalArea);
// Initial calculation for total area on page load
updateTotalArea();
});
// 点击 submitOrder 按钮时的事件处理
document.getElementById('submitOrder').addEventListener('click', () => {
// 获取各个选项的值
const proCategory = document.querySelector('input[name="proCategory"]:checked').value;
const mixedCategory = document.querySelector('input[name="MixedCategory"]:checked')?.value || '';
const hdiBuilds = document.querySelector('input[name="HDIBuilds"]:checked')?.value || '';
const boardLayers = document.querySelector('input[name="BoardLayers"]:checked').value;
const boardHeight = document.getElementById('BoardHeight').value;
const boardWidth = document.getElementById('BoardWidth').value;
const num = document.getElementById('num').value;
const boardType = document.querySelector('input[name="BoardType"]:checked').value;
const orderStage = document.querySelector('input[name="OrderStage"]:checked').value;
const boardThickness = document.querySelector('input[name="BoardThickness"]:checked')?.value || '';
const CopperThickness = document.querySelector('input[name="CopperThickness"]:checked')?.value || '';
const innerCopperThickness = document.querySelector('input[name="InnerCopperThickness"]:checked')?.value || '';
const aluminumType = document.querySelector('input[name="AluminumType"]:checked')?.value || '';
const solderColor = document.querySelector('input[name="SolderColor"]:checked')?.value || '';
const fontColor = document.querySelector('input[name="FontColor"]:checked')?.value || '';
const invoice = document.querySelector('input[name="Invoice"]:checked')?.value || '';
const lineWeight = document.querySelector('input[name="LineWeight"]:checked')?.value || '';
const vias = document.querySelector('input[name="Vias"]:checked')?.value || '';
const solderCover = document.querySelector('input[name="SolderCover"]:checked')?.value || '';
const flyingProbe = document.querySelector('input[name="FlyingProbe"]:checked')?.value || '';
const surfaceFinish = document.querySelector('input[name="SurfaceFinish"]:checked')?.value || '';
const imGoldThinckness = document.querySelector('input[name="ImGoldThinckness"]:checked')?.value || '';
const halfHole = document.querySelector('input[name="HalfHole"]:checked')?.value || '';
const holeThickness = document.querySelector('input[name="HoleThickness"]:checked')?.value || '';
const WithstandVoltage = document.querySelector('input[name="WithstandVoltage"]:checked')?.value || '';
const impedanceSize = document.querySelector('input[name="ImpedanceSize"]:checked')?.value || '';
/* 个性服务参数 */
const QualityCompensation = document.querySelector('input[name="QualityCompensation"]:checked')?.value || '';
const LowResistanceTest = document.querySelector('input[name="LowResistanceTest"]:checked')?.value || '';
const ProductFileSure = document.querySelector('input[name="ProductFileSure"]:checked')?.value || '';
const ReportMaterial = document.querySelector('input[name="ReportMaterial"]:checked')?.value || '';
const GongBoundaryTolerance = document.querySelector('input[name="GongBoundaryTolerance"]:checked')?.value || '';
const PanelAppearanceRequire = document.querySelector('input[name="PanelAppearanceRequire"]:checked')?.value || '';
const WhitePaperService = document.querySelector('input[name="WhitePaperService"]:checked')?.value || '';
const IsNoneFont = document.querySelector('input[name="IsNoneFont"]:checked')?.value || '';
// 拼接 urlhttps://www.jiepei.com/pcb/pcbquote?proCategory=fr4Item&BoardHeight=10&BoardWidth=10&num=4&BoardLayers=2&BoardType=set&BoardThickness=2
let url =
`https://www.jiepei.com/pcb/pcbquote?proCategory=${encodeURIComponent(proCategory)}&BoardHeight=${encodeURIComponent(boardHeight)}&BoardWidth=${encodeURIComponent(boardWidth)}&num=${encodeURIComponent(num)}&BoardLayers=${encodeURIComponent(boardLayers)}&BoardType=${encodeURIComponent(boardType)}&OrderStage=${encodeURIComponent(orderStage)}`;
url += mixedCategory ? `&MixedCategory=${encodeURIComponent(mixedCategory)}` : '';
url += hdiBuilds ? `&HDIBuilds=${encodeURIComponent(hdiBuilds)}` : '';
url += boardThickness ? `&BoardThickness=${encodeURIComponent(boardThickness)}` : '';
url += CopperThickness ? `&CopperThickness=${encodeURIComponent(CopperThickness)}` : '';
url += innerCopperThickness ? `&InnerCopperThickness=${encodeURIComponent(innerCopperThickness)}` : '';
url += aluminumType ? `&AluminumType=${encodeURIComponent(aluminumType)}` : '';
url += solderColor ? `&SolderColor=${encodeURIComponent(solderColor)}` : '';
url += fontColor ? `&FontColor=${encodeURIComponent(fontColor)}` : '';
url += invoice ? `&Invoice=${encodeURIComponent(invoice)}` : '';
url += lineWeight ? `&LineWeight=${encodeURIComponent(lineWeight)}` : '';
url += vias ? `&Vias=${encodeURIComponent(vias)}` : '';
url += solderCover ? `&SolderCover=${encodeURIComponent(solderCover)}` : '';
url += flyingProbe ? `&FlyingProbe=${encodeURIComponent(flyingProbe)}` : '';
url += surfaceFinish ? `&SurfaceFinish=${encodeURIComponent(surfaceFinish)}` : '';
url += imGoldThinckness ? `&ImGoldThinckness=${encodeURIComponent(imGoldThinckness)}` : '';
url += halfHole ? `&HalfHole=${encodeURIComponent(halfHole)}` : '';
url += holeThickness ? `&HoleThickness_=${encodeURIComponent(holeThickness)}` : '';
url += WithstandVoltage ? `&WithstandVoltage=${encodeURIComponent(WithstandVoltage)}` : '';
url += impedanceSize ? `&ImpedanceSize=${encodeURIComponent(impedanceSize)}` : '';
url += QualityCompensation ? `&QualityCompensation=${encodeURIComponent(QualityCompensation)}` : '';
url += LowResistanceTest ? `&LowResistanceTest=${encodeURIComponent(LowResistanceTest)}` : '';
url += ProductFileSure ? `&ProductFileSure=${encodeURIComponent(ProductFileSure)}` : '';
url += ReportMaterial ? `&ReportMaterial=${encodeURIComponent(ReportMaterial)}` : '';
url += GongBoundaryTolerance ? `&GongBoundaryTolerance=${encodeURIComponent(GongBoundaryTolerance)}` : '';
url += PanelAppearanceRequire ? `&PanelAppearanceRequire=${encodeURIComponent(PanelAppearanceRequire)}` : '';
url += WhitePaperService ? `&WhitePaperService=${encodeURIComponent(WhitePaperService)}` : '';
url += IsNoneFont ? `&IsNoneFont=${encodeURIComponent(IsNoneFont)}` : '';
// 打开新窗口
// window.open(url, '_blank');
dialog('注意', '下单前务必仔细检查所有项目是否符合预期,捷配官网可能与本扩展显示存在出入,本扩展不对工艺组合可行性进行验证,以捷配官网为准。\n点击确定前往捷配下单。', `eda.sys_Window.open('${url}', '_blank')`);
});
document.getElementById('selectBoard').addEventListener('click', () => {
eda.sys_Message.showToastMessage("在画布上选择板框将自动识别板子大小", 'info');
eda.pcb_Event.addMouseEventListener(
'1',
'selected',
async () => {
new Promise(resolve => setTimeout(() => resolve(), 500))
.then(
async () => {
const selectedPrimitives = await eda.pcb_SelectControl.getAllSelectedPrimitives();
console.log(selectedPrimitives);
if (selectedPrimitives.length === 1) {
if (selectedPrimitives[0].regionName === "Board Outline") {
console.log(selectedPrimitives[0]);
const BBox = await eda.pcb_Primitive.getPrimitivesBBox([selectedPrimitives[0].getState_PrimitiveId()]);
const boardHeight = eda.sys_Unit.milToMm(BBox.maxY - BBox.minY - 10) / 10;
const boardWidth = eda.sys_Unit.milToMm(BBox.maxX - BBox.minX - 10) / 10;
document.getElementById('BoardHeight').value = boardHeight;
document.getElementById('BoardWidth').value = boardWidth;
eda.sys_Message.showToastMessage("已自动识别板子大小", 'success');
} else {
eda.sys_Message.showToastMessage("所选图元非板框", 'error');
}
} else if (selectedPrimitives.length === 0) {
eda.sys_Message.showToastMessage("未选择任何图元", 'error');
} else {
eda.sys_Message.showToastMessage("仅支持选择单个图元", 'error');
}
}
);
},
true
);
});
function dialog(title, content, cmd) {
// tailwind css 实现,带半透明背景
let dialogHtml = `
<div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity z-50" id="dialogOverlay">
<div class="flex items-center justify-center min-h-screen">
<div class="bg-white rounded-lg shadow-lg p-6 max-w-md w-full">
<h2 class="text-xl font-semibold mb-4">${title}</h2>
<p>${content}</p>
<div class="mt-4 flex justify-end">`;
dialogHtml += cmd ? `
<button class="bg-blue-500 text-white px-4 py-2 rounded mr-2" onclick="${cmd + '; document.getElementById(\'dialogOverlay\').remove();'}">确定</button>
` : '';
dialogHtml += `
<button class="bg-gray-300 px-4 py-2 rounded" onclick="document.getElementById('dialogOverlay').remove()">取消</button>
</div>
</div>
</div>
</div>`;
document.body.insertAdjacentHTML('beforeend', dialogHtml);
}
</script>
<script>
function setupRadioGroup(containerId, radioName, initialValue = null, onChangeCallback = null) {
const container = document.getElementById(containerId);
if (!container) {
console.warn(`Container with ID '${containerId}' not found.`);
return;
}
const radios = container.querySelectorAll(`input[type="radio"][name="${radioName}"]`);
console.log(`Setting up radio group: ${radioName} with initial value: ${initialValue}`);
// Set initial selection
if (initialValue) {
const initialRadio = Array.from(radios).find(radio => radio.value === initialValue);
if (initialRadio) {
initialRadio.checked = true;
}
} else if (radios.length > 0 && !container.querySelector(`input[name="${radioName}"]:checked`)) {
// If no initialValue and no radio is checked, check the first one by default
radios[0].checked = true;
}
// Attach event listener for changes
container.addEventListener('change', (event) => {
if (event.target.type === 'radio' && event.target.name === radioName) {
if (onChangeCallback) {
onChangeCallback(event.target.value);
}
}
});
// Attach a method to the container to easily get the selected value
container.getValue = () => {
const selectedRadio = container.querySelector(`input[name="${radioName}"]:checked`);
return selectedRadio ? selectedRadio.value : null;
};
}
function updateBoardCraft(selectedCategory) {
const boardLayersContainer = document.getElementById('BoardLayers');
const aluminumTypeContainer = document.getElementById('AluminumType');
const boardThicknessContainer = document.getElementById('BoardThickness');
const copperThicknessContainer = document.getElementById('CopperThickness');
const innerCopperThicknessContainer = document.getElementById('InnerCopperThickness');
const solderColorContainer = document.getElementById('SolderColor');
const fontColorContainer = document.getElementById('FontColor');
const invoiceContainer = document.getElementById('Invoice');
const lineWeightContainer = document.getElementById('LineWeight');
const viasContainer = document.getElementById('Vias');
const solderCoverContainer = document.getElementById('SolderCover');
const flyingProbeContainer = document.getElementById('FlyingProbe');
const surfaceFinishContainer = document.getElementById('SurfaceFinish');
const selectedMixedCategory = document.querySelector('input[name="MixedCategory"]:checked')?.value || '1';
const selectedHDIBuilds = document.querySelector('input[name="HDIBuilds"]:checked')?.value || '1';
let selectedLayer = '2';
let selectedAluminumType = '1';
let selectedBoardThickness = '1.6';
let selectedCopperThickness = '1';
let selectedInnerCopperThickness = '0.5';
let selectedSolderColor = 'green';
let selectedFontColor = 'white';
let selectedInvoice = '1';
let selectedLineWeight = '10';
let selectedVias = '0.8';
let selectedSolderCover = 'converoil';
let selectedFlyingProbe = 'full';
let selectedSurfaceFinish = 'haslwithfree';
if (boardLayersContainer.innerHTML !== '') {
selectedLayer = document.querySelector('input[name="BoardLayers"]:checked')?.value || selectedLayer;
}
if (aluminumTypeContainer.innerHTML !== '') {
selectedAluminumType = document.querySelector('input[name="AluminumType"]:checked')?.value || '1';
}
if (boardThicknessContainer.innerHTML !== '') {
selectedBoardThickness = document.querySelector('input[name="BoardThickness"]:checked')?.value || '1.6';
}
if (copperThicknessContainer.innerHTML !== '') {
selectedCopperThickness = document.querySelector('input[name="CopperThickness"]:checked')?.value || '1';
}
if (innerCopperThicknessContainer.innerHTML !== '') {
selectedInnerCopperThickness = document.querySelector('input[name="InnerCopperThickness"]:checked')?.value || '0.5';
}
if (solderColorContainer.innerHTML !== '') {
selectedSolderColor = document.querySelector('input[name="SolderColor"]:checked')?.value || 'green';
}
if (fontColorContainer.innerHTML !== '') {
selectedFontColor = document.querySelector('input[name="FontColor"]:checked')?.value || 'white';
}
if (invoiceContainer.innerHTML !== '') {
selectedInvoice = document.querySelector('input[name="Invoice"]:checked')?.value || '1';
}
if (lineWeightContainer.innerHTML !== '') {
selectedLineWeight = document.querySelector('input[name="LineWeight"]:checked')?.value || '10';
}
if (viasContainer.innerHTML !== '') {
selectedVias = document.querySelector('input[name="Vias"]:checked')?.value || '0.8';
}
if (solderCoverContainer.innerHTML !== '') {
selectedSolderCover = document.querySelector('input[name="SolderCover"]:checked')?.value || 'converoil';
}
if (flyingProbeContainer.innerHTML !== '') {
selectedFlyingProbe = document.querySelector('input[name="FlyingProbe"]:checked')?.value || 'full';
}
if (surfaceFinishContainer.innerHTML !== '') {
selectedSurfaceFinish = document.querySelector('input[name="SurfaceFinish"]:checked')?.value || 'haslwithfree';
}
boardLayersContainer.innerHTML = '';
aluminumTypeContainer.innerHTML = '';
boardThicknessContainer.innerHTML = '';
copperThicknessContainer.innerHTML = '';
innerCopperThicknessContainer.innerHTML = '';
solderColorContainer.innerHTML = '';
fontColorContainer.innerHTML = '';
invoiceContainer.innerHTML = '';
lineWeightContainer.innerHTML = '';
viasContainer.innerHTML = '';
solderCoverContainer.innerHTML = '';
flyingProbeContainer.innerHTML = '';
surfaceFinishContainer.innerHTML = '';
console.log(`selectedCategory: ${selectedCategory}`);
console.log(`selectedMixedCategory: ${selectedMixedCategory}`)
console.log(`selectedHDIBuilds: ${selectedHDIBuilds}`)
console.log(`selectedLayer: ${selectedLayer}`)
// 板子层数
const layersToShow =
selectedCategory === 'rogersItem' ?
boardLayersOptions[selectedCategory][selectedMixedCategory] || [] :
selectedCategory === 'hdiItem' ?
boardLayersOptions[selectedCategory][selectedHDIBuilds] || [] :
boardLayersOptions[selectedCategory] || [];
// 基板类型
const aluminumTypeToShow = aluminumTypeOptions[selectedCategory] || [];
// 板子厚度
const thicknessToShow =
selectedCategory === 'rogersItem' ?
boardThicknessOptions[selectedCategory][selectedMixedCategory][selectedLayer] || boardThicknessOptions[selectedCategory][selectedMixedCategory]['4'] :
selectedCategory === 'hdiItem' ?
selectedHDIBuilds === '1' ?
boardThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || boardThicknessOptions[selectedCategory][selectedHDIBuilds]['4'] :
selectedHDIBuilds === '2' ?
boardThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || boardThicknessOptions[selectedCategory][selectedHDIBuilds]['6'] :
selectedHDIBuilds === '3' ?
boardThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || boardThicknessOptions[selectedCategory][selectedHDIBuilds]['8'] :
boardThicknessOptions[selectedCategory][selectedLayer] || [] : boardThicknessOptions[selectedCategory][selectedLayer] ||boardThicknessOptions[selectedCategory]['1'];
// 外层铜厚
const copperThicknessToShow =
selectedCategory === 'rogersItem' ?
copperThicknessOptions[selectedCategory][selectedMixedCategory][selectedLayer] || copperThicknessOptions[selectedCategory][selectedMixedCategory]['4'] :
selectedCategory === 'hdiItem' ?
selectedHDIBuilds === '1' ?
copperThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || copperThicknessOptions[selectedCategory][selectedHDIBuilds]['4'] :
selectedHDIBuilds === '2' ?
copperThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || copperThicknessOptions[selectedCategory][selectedHDIBuilds]['6'] :
selectedHDIBuilds === '3' ?
copperThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || copperThicknessOptions[selectedCategory][selectedHDIBuilds]['8'] :
copperThicknessOptions[selectedCategory][selectedLayer] || [] : copperThicknessOptions[selectedCategory][selectedLayer] || copperThicknessOptions[selectedCategory]['1'];
// 内层铜厚
const innerCopperThicknessToShow =
selectedCategory === 'rogersItem' ?
innerCopperThicknessOptions[selectedCategory][selectedMixedCategory][selectedLayer] || innerCopperThicknessOptions[selectedCategory][selectedMixedCategory]['4'] :
selectedCategory === 'hdiItem' ?
selectedHDIBuilds === '1' ?
innerCopperThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || innerCopperThicknessOptions[selectedCategory][selectedHDIBuilds]['4'] :
selectedHDIBuilds === '2' ?
innerCopperThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || innerCopperThicknessOptions[selectedCategory][selectedHDIBuilds]['6'] :
selectedHDIBuilds === '3' ?
innerCopperThicknessOptions[selectedCategory][selectedHDIBuilds][selectedLayer] || innerCopperThicknessOptions[selectedCategory][selectedHDIBuilds]['8'] :
innerCopperThicknessOptions[selectedCategory][selectedLayer] || [] : innerCopperThicknessOptions[selectedCategory][selectedLayer] || [];
// 阻焊颜色
const solderColorsToShow = solderColorOptions[selectedCategory] || [];
// 字符颜色
const fontColorsToShow = fontColorOptions[selectedCategory] || [];
// 导热系数
const invoiceToShow = invoiceOptions[selectedCategory] || [];
// 最小线宽/线距
const lineWeightsToShow = lineWeightOptions[selectedCategory] || [];
// 最小孔径
const viasToShow = viasOptions[selectedCategory] || [];
// 过孔盖油
const solderCoverToShow = solderCoverOptions[selectedCategory] || [];
// 飞针测试
const flyingProbeToShow = flyingProbeOptions[selectedCategory] || [];
// 表面处理
const surfaceFinishToShow = surfaceFinishOptions[selectedCategory] || [];
console.log(`thicknessToShow: ${thicknessToShow}`);
layersToShow.forEach(layer => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="BoardLayers" type="radio" value="${layer}">
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${layer}</span>
`;
boardLayersContainer.appendChild(label);
});
aluminumTypeToShow.forEach(([value, image, text]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="AluminumType" type="radio" value="${value}" ${value === selectedAluminumType ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700"><img alt="HDI" class="mr-1 h-6 inline-block" src="/iframe/img/${image}.jpg"> ${text}</span>
`;
aluminumTypeContainer.appendChild(label);
});
thicknessToShow.forEach(thickness => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="BoardThickness" type="radio" value="${thickness}">
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${thickness}mm</span>
`;
boardThicknessContainer.appendChild(label);
});
copperThicknessToShow.forEach(copperThickness => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="CopperThickness" type="radio" value="${copperThickness}">
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${copperThickness}oz</span>
`;
copperThicknessContainer.appendChild(label);
});
innerCopperThicknessToShow.forEach(innerCopperThickness => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="InnerCopperThickness" type="radio" value="${innerCopperThickness}">
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${innerCopperThickness}oz</span>
`;
innerCopperThicknessContainer.appendChild(label);
});
solderColorsToShow.forEach(([value, text, color]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="SolderColor" type="radio" value="${value}" ${value === selectedSolderColor ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700"><em class="example-color" style="background: ${color}"></em>${text}</span>
`;
solderColorContainer.appendChild(label);
});
fontColorsToShow.forEach(([value, text, color]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="FontColor" type="radio" value="${value}" ${value === selectedFontColor ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700"><em class="example-color" style="background: ${color}"></em>${text}</span>
`;
fontColorContainer.appendChild(label);
});
invoiceToShow.forEach(([value, text]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="Invoice" type="radio" value="${value}" ${value === selectedInvoice ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${text}</span>
`;
invoiceContainer.appendChild(label);
});
lineWeightsToShow.forEach(lineWeight => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="LineWeight" type="radio" value="${lineWeight}" ${lineWeight === selectedLineWeight ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${lineWeight}/${lineWeight}mil↑</span>
`;
lineWeightContainer.appendChild(label);
});
viasToShow.forEach(via => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="Vias" type="radio" value="${via}" ${via === selectedVias ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${via}mm</span>
`;
viasContainer.appendChild(label);
});
solderCoverToShow.forEach(([value, text]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="SolderCover" type="radio" value="${value}" ${value === selectedSolderCover ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${text}</span>
`;
solderCoverContainer.appendChild(label);
});
flyingProbeToShow.forEach(([value, text]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="FlyingProbe" type="radio" value="${value}" ${value === selectedFlyingProbe ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${text}</span>
`;
flyingProbeContainer.appendChild(label);
});
surfaceFinishToShow.forEach(([value, text]) => {
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="SurfaceFinish" type="radio" value="${value}" ${value === selectedSurfaceFinish ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">${text}</span>
`;
surfaceFinishContainer.appendChild(label);
});
if (selectedCategory === 'hdiItem') {
document.getElementById('HDIBuilds-container').style.display = 'block';
document.getElementById('MixedCategory-container').style.display = 'none';
} else if (selectedCategory === 'rogersItem') {
document.getElementById('HDIBuilds-container').style.display = 'none';
document.getElementById('MixedCategory-container').style.display = 'block';
} else {
document.getElementById('HDIBuilds-container').style.display = 'none';
document.getElementById('MixedCategory-container').style.display = 'none';
}
if (selectedLayer >= 4) {
document.getElementById('InnerCopperThickness-container').style.display = 'block';
} else {
document.getElementById('InnerCopperThickness-container').style.display = 'none';
}
if (selectedCategory === 'aluminumItem' || selectedCategory === 'copperItem') {
document.getElementById('Invoice-container').style.display = 'block';
selectedCategory === 'copperItem' ?
document.getElementById('CopperStructure-container').style.display = 'block' :
document.getElementById('CopperStructure-container').style.display = 'none';
selectedCategory === 'aluminumItem' ?
document.getElementById('WithstandVoltage-container').style.display = 'block' :
document.getElementById('WithstandVoltage-container').style.display = 'none';
if (selectedLayer !== '1') {
document.getElementById('AluminumType-container').style.display = 'block';
} else {
document.getElementById('AluminumType-container').style.display = 'none';
}
} else {
document.getElementById('Invoice-container').style.display = 'none';
document.getElementById('AluminumType-container').style.display = 'none';
document.getElementById('CopperStructure-container').style.display = 'none';
}
if (selectedCategory === 'fr4Item' || selectedCategory === 'rogersItem') {
document.getElementById('SolderCover-container').style.display = 'block';
} else {
document.getElementById('SolderCover-container').style.display = 'none';
}
if (selectedCategory === 'fr4Item') {
document.getElementById('ImpedanceSize-container').style.display = 'block';
if(selectedLayer === '4') {
document.getElementById('StackedStructure-container').style.display = 'block';
} else {
document.getElementById('StackedStructure-container').style.display = 'none';
}
} else {
document.getElementById('ImpedanceSize-container').style.display = 'none';
document.getElementById('StackedStructure-container').style.display = 'none';
}
if (selectedCategory === 'fr4Item' || selectedCategory === 'rogersItem' || selectedCategory === 'hdiItem') {
document.getElementById('HalfHole-container').style.display = 'block';
document.getElementById('HoleThickness_-container').style.display = 'block';
} else {
document.getElementById('HalfHole-container').style.display = 'none';
document.getElementById('HoleThickness_-container').style.display = 'none';
}
setupRadioGroup('BoardLayers', 'BoardLayers', selectedLayer);
setupRadioGroup('BoardThickness', 'BoardThickness', selectedBoardThickness);
setupRadioGroup('CopperThickness', 'CopperThickness', selectedCopperThickness);
setupRadioGroup('InnerCopperThickness', 'InnerCopperThickness', selectedInnerCopperThickness);
setupRadioGroup('SolderColor', 'SolderColor', selectedSolderColor);
setupRadioGroup('FontColor', 'FontColor', selectedFontColor);
setupRadioGroup('Invoice', 'Invoice', selectedInvoice);
setupRadioGroup('LineWeight', 'LineWeight', selectedLineWeight);
setupRadioGroup('Vias', 'Vias', selectedVias);
setupRadioGroup('SolderCover', 'SolderCover', selectedSolderCover);
setupRadioGroup('FlyingProbe', 'FlyingProbe', selectedFlyingProbe);
setupRadioGroup('SurfaceFinish', 'SurfaceFinish', selectedSurfaceFinish);
}
</script>
<script>
let presetName = '';
let presetList = eda.sys_Storage.getExtensionUserConfig('PresetList') || {};
/*let presetList = {
'测试测试': {
proCategory: 'rogersItem',
BoardHeight: '10',
BoardWidth: '10',
num: '5',
MixedCategory: '2',
BoardLayers: '8',
BoardType: 'pcs',
OrderStage: '0',
BoardThickness: '3.0',
CopperThickness: '2',
InnerCopperThickness: '1',
AluminumType: '1',
CopperStructure: '1',
Invoice: '4',
SolderColor: 'yellow',
FontColor: 'black',
LineWeight: '8',
Vias: '0.7',
SolderCover: 'aluminumplughole',
FlyingProbe: 'teststand',
SurfaceFinish: 'immersiongold',
ImGoldThinckness: '2',
FormingType: 'mechanical',
ImpedanceSize: '1',
HalfHole: '4',
HoleThickness_: '25',
WithstandVoltage: '4000',
QualityCompensation: '2',
LowResistanceTest: '1',
ProductFileSure: '1',
ReportMaterial: '1',
GongBoundaryTolerance: '1',
PanelAppearanceRequire: '1',
WhitePaperService: '1',
IsNoneFont: '1'
}
}*/
document.getElementById('CreatePreset').addEventListener('click', () => {
const newPresetName = document.getElementById('PresetName').value;
if (newPresetName && !presetList[newPresetName]) {
presetList[newPresetName] = {};
presetName = newPresetName;
showPresetList();
} else if (presetList[newPresetName]) {
dialog('错误', '预设名称已存在,必须使用其他名称。');
} else {
dialog('错误', '预设名称不能为空。');
}
});
document.getElementById('savePreset').addEventListener('click', () => {
if (presetName) {
presetList[presetName] = {
proCategory: document.querySelector('input[name="proCategory"]:checked')?.value || '',
BoardHeight: document.getElementById('BoardHeight').value,
BoardWidth: document.getElementById('BoardWidth').value,
num: document.getElementById('num').value,
MixedCategory: document.querySelector('input[name="MixedCategory"]:checked')?.value || '',
BoardLayers: document.querySelector('input[name="BoardLayers"]:checked')?.value || '',
BoardType: document.querySelector('input[name="BoardType"]:checked')?.value || '',
OrderStage: document.querySelector('input[name="OrderStage"]:checked')?.value || '',
BoardThickness: document.querySelector('input[name="BoardThickness"]:checked')?.value || '',
CopperThickness: document.querySelector('input[name="CopperThickness"]:checked')?.value || '',
InnerCopperThickness: document.querySelector('input[name="InnerCopperThickness"]:checked')?.value || '',
AluminumType: document.querySelector('input[name="AluminumType"]:checked')?.value || '',
CopperStructure: document.querySelector('input[name="CopperStructure"]:checked')?.value || '',
Invoice: document.querySelector('input[name="Invoice"]:checked')?.value || '',
SolderColor: document.querySelector('input[name="SolderColor"]:checked')?.value || '',
FontColor: document.querySelector('input[name="FontColor"]:checked')?.value || '',
LineWeight: document.querySelector('input[name="LineWeight"]:checked')?.value || '',
Vias: document.querySelector('input[name="Vias"]:checked')?.value || '',
SolderCover: document.querySelector('input[name="SolderCover"]:checked')?.value || '',
FlyingProbe: document.querySelector('input[name="FlyingProbe"]:checked')?.value || '',
SurfaceFinish: document.querySelector('input[name="SurfaceFinish"]:checked')?.value || '',
ImGoldThinckness: document.querySelector('input[name="ImGoldThinckness"]:checked')?.value || '',
HalfHole: document.querySelector('input[name="HalfHole"]:checked')?.value || '',
HoleThickness_: document.querySelector('input[name="HoleThickness_"]:checked')?.value || '',
ImpedanceSize: document.querySelector('input[name="ImpedanceSize"]:checked')?.value || '',
WithstandVoltage: document.querySelector('input[name="WithstandVoltage"]:checked')?.value || '',
QualityCompensation: document.querySelector('input[name="QualityCompensation"]:checked')?.value || '',
LowResistanceTest: document.querySelector('input[name="LowResistanceTest"]:checked')?.value || '',
ProductFileSure: document.querySelector('input[name="ProductFileSure"]:checked')?.value || '',
ReportMaterial: document.querySelector('input[name="ReportMaterial"]:checked')?.value || '',
GongBoundaryTolerance: document.querySelector('input[name="GongBoundaryTolerance"]:checked')?.value || '',
PanelAppearanceRequire: document.querySelector('input[name="PanelAppearanceRequire"]:checked')?.value || '',
WhitePaperService: document.querySelector('input[name="WhitePaperService"]:checked')?.value || '',
IsNoneFont: document.querySelector('input[name="IsNoneFont"]:checked')?.value || ''
};
eda.sys_Storage.setExtensionUserConfig('PresetList', presetList);
}
});
document.getElementById('deletePreset').addEventListener('click', () => {
// 删除当前选择的预设
if (presetName && presetList[presetName]) {
delete presetList[presetName];
presetName = ''; // 清空预设名称
eda.sys_Storage.setExtensionUserConfig('PresetList', presetList);
showPresetList(); // 更新预设列表显示
} else {
dialog('错误', '没有选择要删除的预设。');
}
});
function showPresetList() {
const presetListContainer = document.getElementById('PresetList');
presetListContainer.innerHTML = ''; // 清空现有内容
for (const name in presetList) {
const iconList = {
'fr4Item': '/iframe/img/img_pro_FR4.png',
'rogersItem': '/iframe/img/img_pro_Rogers.png',
'hdiItem': '/iframe/img/img_pro_HDI.png',
'aluminumItem': '/iframe/img/img_pro_Aluminum.png',
'copperItem': '/iframe/img/img_pro_Copper.png',
'cem1Item': '/iframe/img/img_pro_CEM1.png',
'22fItem': '/iframe/img/img_pro_22F.png',
'cem3Item': '/iframe/img/img_pro_CEM3.png',
'fr1Item': '/iframe/img/img_pro_FR1.png'
}
const icon_src = iconList[presetList[name].proCategory] || '/iframe/img/img_pro_FR4.png';
const label = document.createElement('label');
label.className = 'item cursor-pointer';
label.innerHTML = `
<input class="hidden peer" name="presetName" type="radio" value="${name}" ${name === presetName ? 'checked' : ''}>
<span class="block p-1.5 border border-gray-300 rounded-md text-gray-700 font-medium text-xs sm:text-sm hover:border-blue-500 transition-colors duration-200 ease-in-out
peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-700">
<img class="inline-block h-4" src="${icon_src}" alt="icon">
${name}
</span>
`;
// 监听点击 调用 autoSetupPreset 函数
label.addEventListener('click', () => {
presetName = name; // 更新预设名称
autoSetupPreset(name); // 调用自动设置预设函数
});
presetListContainer.appendChild(label);
}
}
document.addEventListener('DOMContentLoaded', () => {
showPresetList();
});
// 传入预设名称自动使用setupRadioGroup所有选项
function autoSetupPreset(presetName) {
if (presetList[presetName]) {
setupRadioGroup('proCategory', 'proCategory', presetList[presetName].proCategory || '');
presetList[presetName].proCategory ? updateBoardCraft(presetList[presetName].proCategory) : '';
setupRadioGroup('BoardLayers', 'BoardLayers', presetList[presetName].BoardLayers || '');
presetList[presetName].proCategory ? updateBoardCraft(presetList[presetName].proCategory) : '';
setupRadioGroup('MixedCategory', 'MixedCategory', presetList[presetName].MixedCategory || '');
presetList[presetName].proCategory ? updateBoardCraft(presetList[presetName].proCategory) : '';
setupRadioGroup('HDIBuilds', 'HDIBuilds', presetList[presetName].HDIBuilds || '');
presetList[presetName].proCategory ? updateBoardCraft(presetList[presetName].proCategory) : '';
document.getElementById('BoardHeight').value = presetList[presetName].BoardHeight;
document.getElementById('BoardWidth').value = presetList[presetName].BoardWidth;
document.getElementById('num').value = presetList[presetName].num;
setupRadioGroup('BoardType', 'BoardType', presetList[presetName].BoardType);
setupRadioGroup('OrderStage', 'OrderStage', presetList[presetName].OrderStage);
setupRadioGroup('AluminumType', 'AluminumType', presetList[presetName].AluminumType);
setupRadioGroup('CopperStructure', 'CopperStructure', presetList[presetName].CopperStructure);
setupRadioGroup('BoardThickness', 'BoardThickness', presetList[presetName].BoardThickness);
setupRadioGroup('CopperThickness', 'CopperThickness', presetList[presetName].CopperThickness);
setupRadioGroup('Invoice', 'Invoice', presetList[presetName].Invoice);
setupRadioGroup('InnerCopperThickness', 'InnerCopperThickness', presetList[presetName].InnerCopperThickness);
setupRadioGroup('SolderColor', 'SolderColor', presetList[presetName].SolderColor);
setupRadioGroup('FontColor', 'FontColor', presetList[presetName].FontColor);
setupRadioGroup('LineWeight', 'LineWeight', presetList[presetName].LineWeight);
setupRadioGroup('Vias', 'Vias', presetList[presetName].Vias);
setupRadioGroup('SolderCover', 'SolderCover', presetList[presetName].SolderCover);
setupRadioGroup('FlyingProbe', 'FlyingProbe', presetList[presetName].FlyingProbe);
setupRadioGroup('SurfaceFinish', 'SurfaceFinish', presetList[presetName].SurfaceFinish);
setupRadioGroup('ImpedanceSize', 'ImpedanceSize', presetList[presetName].ImpedanceSize);
setupRadioGroup('HalfHole', 'HalfHole', presetList[presetName].HalfHole);
setupRadioGroup('HoleThickness_', 'HoleThickness_', presetList[presetName].HoleThickness_);
setupRadioGroup('WithstandVoltage', 'WithstandVoltage', presetList[presetName].WithstandVoltage);
setupRadioGroup('QualityCompensation', 'QualityCompensation', presetList[presetName].QualityCompensation);
setupRadioGroup('LowResistanceTest', 'LowResistanceTest', presetList[presetName].LowResistanceTest);
setupRadioGroup('ProductFileSure', 'ProductFileSure', presetList[presetName].ProductFileSure);
setupRadioGroup('ReportMaterial', 'ReportMaterial', presetList[presetName].ReportMaterial);
setupRadioGroup('GongBoundaryTolerance', 'GongBoundaryTolerance', presetList[presetName].GongBoundaryTolerance);
setupRadioGroup('PanelAppearanceRequire', 'PanelAppearanceRequire', presetList[presetName].PanelAppearanceRequire);
setupRadioGroup('WhitePaperService', 'WhitePaperService', presetList[presetName].WhitePaperService);
setupRadioGroup('IsNoneFont', 'IsNoneFont', presetList[presetName].IsNoneFont);
}
}
</script>
</body>
</html>