feat: Refactor code structure for improved readability and maintainability

This commit is contained in:
alivender
2025-05-09 19:28:43 +08:00
parent d4b34bd6d4
commit 6a786c1519
17 changed files with 2913 additions and 583 deletions

View File

@@ -44,10 +44,14 @@
<div v-for="pin in props.pins" :key="pin.pinId"
:style="{
position: 'absolute',
left: `${pin.x}px`,
top: `${pin.y}px`,
left: `${pin.x * props.size}px`,
top: `${pin.y * props.size}px`,
transform: 'translate(-50%, -50%)'
}"> <Pin
}"
:data-pin-wrapper="`${pin.pinId}`"
:data-pin-x="`${pin.x * props.size}`"
:data-pin-y="`${pin.y * props.size}`">
<Pin
:ref="el => { if(el) pinRefs[pin.pinId] = el }"
:label="pin.pinId"
:constraint="pin.constraint"
@@ -70,7 +74,6 @@ const pinRefs = ref<Record<string, any>>({});
interface LEDProps {
size?: number;
color?: string;
initialOn?: boolean;
brightness?: number;
pins?: {
pinId: string;
@@ -83,7 +86,6 @@ interface LEDProps {
const props = withDefaults(defineProps<LEDProps>(), {
size: 1,
color: 'red',
initialOn: false,
brightness: 80,
pins: () => [
{
@@ -169,21 +171,31 @@ defineExpose({
direction: 'input',
type: 'digital',
pins: props.pins
}), getPinPosition: (pinId: string) => {
}),
getPinPosition: (pinId: string) => {
// 如果是自定义的引脚ID
if (props.pins && props.pins.length > 0) {
console.log('Pin ID:', pinId);
console.log('SMT_LED查找Pin ID:', pinId);
console.log('SMT_LED组件尺寸:', props.size, '宽高:', width.value, 'x', height.value);
const customPin = props.pins.find(p => p.pinId === pinId);
console.log('Custom Pin:', customPin);
console.log('Pin Refs:', pinRefs.value[pinId]);
console.log('找到的引脚配置:', customPin);
if (customPin) {
// 调用对应Pin组件的getPinPosition方法
// 考虑组件尺寸的缩放
const scaledX = customPin.x * props.size;
const scaledY = customPin.y * props.size;
console.log('使用Pin缩放后的坐标:', scaledX, scaledY);
return {
x: customPin.x,
y: customPin.y
}
} return null;
} return null;
x: scaledX,
y: scaledY
};
}
console.log('未找到匹配的引脚');
return null;
}
console.log('没有引脚配置');
return null;
}
});
</script>
@@ -194,7 +206,6 @@ export function getDefaultProps() {
return {
size: 1,
color: 'red',
initialOn: false,
brightness: 80,
pins: [
{