Jelajahi Sumber

조직도 1차

jh-mac 6 bulan lalu
induk
melakukan
13dd2a5b30
3 mengubah file dengan 110 tambahan dan 1 penghapusan
  1. 3 0
      public/image/Vector.svg
  2. 1 1
      src/data/menuItems.ts
  3. 106 0
      src/pages/about/Organization.tsx

+ 3 - 0
public/image/Vector.svg

@@ -0,0 +1,3 @@
+<svg width="191" height="46" viewBox="0 0 191 46" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M177.145 0.211548H165.717H149.626H41.4384H24.949H13.9197L0.151367 22.8621L13.9197 45.5128H24.949H41.4384H149.626H165.717H177.145L190.913 22.8621L177.145 0.211548Z" fill="#70CCBF"/>
+</svg>

+ 1 - 1
src/data/menuItems.ts

@@ -26,7 +26,7 @@ const menuItems: MenuItem[] = [
         ]
     },
     {
-        label: "기업소개",
+        label: "회사소개",
         href: "/about",
         layoutImg: `${LAYOUT_IMAGE_PREFIX}/기업소개.jpg`,
         description: "반도산전을 소개합니다.",

+ 106 - 0
src/pages/about/Organization.tsx

@@ -0,0 +1,106 @@
+import React from "react";
+
+type BoxProps = {
+  left: string;
+  top: string;
+  color?: string;
+  text: string;
+  type?: "default" | "vertical";
+};
+
+type LineProps = {
+  width: string;
+  height: string;
+  left: string;
+  top: string;
+};
+
+
+// Box 컴포넌트에 타입 적용
+const Box: React.FC<BoxProps> = ({
+                                   left,
+                                   top,
+                                   color = "#70CCBF",
+                                   text,
+                                   type = "default",
+                                 }) => {
+  return (
+    <div className={`absolute ${left} ${top} ${type === 'vertical' ? 'rotate-90' : ''}`}>
+      <div className="relative w-[191px] h-[46px]">
+        <svg width="191" height="46" viewBox="0 0 191 46" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path fill={color}
+                d="M177.145 0.211548H165.717H149.626H41.4384H24.949H13.9197L0.151367 22.8621L13.9197 45.5128H24.949H41.4384H149.626H165.717H177.145L190.913 22.8621L177.145 0.211548Z"/>
+        </svg>
+        <div
+          className={`absolute text-center left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 whitespace-pre text-white text-base font-medium font-['Noto_Sans_KR'] ${type === 'vertical' ? 'rotate-270' : ''}`}>
+          <span>{text}</span>
+        </div>
+      </div>
+    </div>
+  );
+};
+
+// Line 컴포넌트에 타입 적용
+const Line: React.FC<LineProps> = ({width, height, left, top}) => (
+  <div className={`absolute ${width} ${height} ${left} ${top} outline outline-offset-[-0.5px] outline-neutral-600`}/>
+);
+
+const Organization: React.FC = () => {
+  const lines = [
+    {width: "w-0", height: "h-[755.07px]", left: "left-[435.65px]", top: "top-[17.12px]"},
+    {width: "w-35", height: "h-0", left: "left-[300px]", top: "top-[137.81px]"},
+    {width: "w-35", height: "h-0", left: "left-[438px]", top: "top-[137.81px]"},
+    {width: "w-36", height: "h-0", left: "left-[291px]", top: "top-[483.41px]"},
+    {width: "w-72", height: "h-0", left: "left-[295.29px]", top: "top-[713.97px]"},
+    {width: "w-0", height: "h-56", left: "left-[133.48px]", top: "top-[772.19px]"},
+    {width: "w-0", height: "h-56", left: "left-[356.20px]", top: "top-[772.19px]"},
+    {width: "w-0", height: "h-56", left: "left-[708.63px]", top: "top-[772.19px]"},
+    {width: "w-144", height: "h-0", left: "left-[133px]", top: "top-[772.12px]"},
+    {width: "w-55.5", height: "h-0", left: "left-[21.17px]", top: "top-[919.23px]"},
+    {width: "w-[485.21px]", height: "h-0", left: "left-[466.11px]", top: "top-[919.23px]"},
+    {width: "w-0", height: "h-20", left: "left-[21.30px]", top: "top-[919.23px]"},
+    {width: "w-0", height: "h-20", left: "left-[466.11px]", top: "top-[919.23px]"},
+    {width: "w-0", height: "h-20", left: "left-[587.36px]", top: "top-[919.23px]"},
+    {width: "w-0", height: "h-20", left: "left-[829.84px]", top: "top-[919.23px]"},
+    {width: "w-0", height: "h-20", left: "left-[951.07px]", top: "top-[919.23px]"},
+    {width: "w-0", height: "h-20", left: "left-[244.48px]", top: "top-[919.23px]"},
+  ];
+
+  const boxes = [
+    // 기존 상단 박스
+    {left: "left-[342.99px]", top: "top-0", color: "#1e3a8a", text: "대표이사"},
+    {left: "left-[343px]", top: "top-[230.41px]", color: "#1e3a8a", text: "부사장"},
+    {left: "left-[342.99px]", top: "top-[345.62px]", color: "#1e3a8a", text: "전무이사"},
+    {left: "left-[126.55px]", top: "top-[460.83px]", color: "#70CCBF", text: "품질경영실"},
+    {left: "left-[559.44px]", top: "top-[115.21px]", color: "#70CCBF", text: "고문"},
+    {left: "left-[121.15px]", top: "top-[115.21px]", color: "#70CCBF", text: "안전보건팀"},
+    {left: "left-[343px]", top: "top-[576.02px]", color: "#1e3a8a", text: "상무이사"},
+    {left: "left-[260.78px]", top: "top-[806.44px]", color: "#8883BB", text: "경영지원팀장"},
+    {left: "left-[613.32px]", top: "top-[806.44px]", color: "#8883BB", text: "공사관리팀장"},
+    {left: "left-[38.33px]", top: "top-[806.44px]", color: "#8883BB", text: "생산 및 영업팀장"},
+    {left: "left-[126.55px]", top: "top-[691.23px]", color: "#8883BB", text: "서울경기지사"},
+    {left: "left-[559px]", top: "top-[691.23px]", color: "#8883BB", text: "경남지사"},
+
+    // 하단 박스 추가 (세로)
+    {left: "left-[-75px]", top: "top-[1060px]", type: "vertical" as const, color: "#8883BB", text: "생\n산\n팀"},
+    {left: "left-[37px]", top: "top-[1060px]",  type: "vertical" as const, color: "#8883BB", text: "자\n재\n관\n리\n팀"},
+    {left: "left-[148px]", top: "top-[1060px]", type: "vertical" as const, color: "#8883BB", text: "영\n업\nA\nS\n팀"},
+    {left: "left-[260px]", top: "top-[1060px]", type: "vertical" as const, color: "#8883BB", text: "총\n무\n경\n리\n팀"},
+    {left: "left-[370px]", top: "top-[1060px]", type: "vertical" as const, color: "#a3a3a3", text: "정\n보\n통\n신\n설\n비"},
+    {left: "left-[491px]", top: "top-[1060px]", type: "vertical" as const, color: "#a3a3a3", text: "기\n간\n망\nS\nI\n팀"},
+    {left: "left-[613px]", top: "top-[1060px]", type: "vertical" as const, color: "#a3a3a3", text: "보\n안\n설\n비\n팀"},
+    {left: "left-[734px]", top: "top-[1060px]", type: "vertical" as const, color: "#4b5563", text: "전\n기\n설\n비\n팀"},
+    {left: "left-[855px]", top: "top-[1060px]", type: "vertical" as const, color: "#4b5563", text: "소\n방\n설\n비\n팀"}
+  ];
+
+  return (
+    <div className="relative flex justify-center h-[1300px] mx-auto max-w-7xl mt-20">
+      <div className="relative w-[974px] h-[1190px]">
+        {lines.map((l, i) => <Line key={i} {...l} />)}
+        {boxes.map((b, i) => <Box key={i} {...b} />)}
+      </div>
+    </div>
+  );
+};
+
+export default Organization;