Add additional pages for complete site migration

- Added /pipe/ category page listing all pipe products
- Added /join-us/ job listings page with benefits
- Added /sales-engineer/ job detail page
- Added /all-projects/ page listing all portfolio projects
- Total 68 static pages generated
This commit is contained in:
Kunthawat Greethong
2026-02-26 07:48:36 +07:00
parent 1ecd405eca
commit 88d06a4edd
4 changed files with 504 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
import Image from 'next/image';
import Link from 'next/link';
import { portfolioProjects } from '@/data/site-config';
export const metadata = {
title: 'ผลงานทั้งหมด | All Projects - ดีลพลัสเทค',
description: 'ผลงานการติดตั้งระบบท่อทุกโครงการ โครงการระบบท่อโรงงาน โครงการระบบน้ำ โครงการระบบดับเพลิง',
};
export default function AllProjectsPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Breadcrumb */}
<nav className="mb-6">
<ol className="flex items-center gap-2 text-sm">
<li>
<Link href="/" className="text-secondary-500 hover:text-primary-600">
</Link>
</li>
<li className="text-secondary-400">/</li>
<li className="text-primary-600 font-medium"></li>
</ol>
</nav>
{/* Header */}
<div className="mb-12">
<h1 className="text-3xl md:text-4xl font-bold text-secondary-900 mb-4">
</h1>
<p className="text-secondary-600 text-lg max-w-3xl">
</p>
</div>
{/* Projects Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{portfolioProjects.map((project) => (
<Link
key={project.id}
href={project.href}
className="card group"
>
<div className="relative aspect-video bg-secondary-100">
<Image
src={project.image}
alt={project.name}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
</div>
<div className="p-4">
<h2 className="text-lg font-bold text-secondary-900 group-hover:text-primary-600 transition-colors">
{project.name}
</h2>
<p className="text-sm text-secondary-600 mt-2 line-clamp-2">
{project.description}
</p>
</div>
</Link>
))}
</div>
{/* CTA */}
<div className="mt-12 text-center">
<p className="text-secondary-600 mb-4">
?
</p>
<div className="flex justify-center gap-4">
<Link href="/contact-us" className="btn-primary">
</Link>
<a href="tel:090-555-1415" className="btn-outline">
090-555-1415
</a>
</div>
</div>
</div>
</div>
);
}

174
src/app/join-us/page.tsx Normal file
View File

@@ -0,0 +1,174 @@
import Link from 'next/link';
export const metadata = {
title: 'ร่วมงานกับเรา | Join Us - ดีลพลัสเทค',
description: 'ร่วมงานกับดีลพลัสเทค เรามอบโอกาสทางอาชีพที่ดี สวัสดิการครบครัน ร่วมเติบโตไปกับเรา',
};
const jobPositions = [
{
id: 'sales-engineer',
title: 'Sales Engineer',
titleTh: 'วิศวกรฝ่ายขาย',
type: 'Full-time',
location: 'กรุงเทพมหานคร',
salary: 'เจรจาต่อรอง',
description: 'รับผิดชอบการขายและให้คำปรึกษาด้านเทคนิคสำหรับผลิตภัณฑ์ท่อและอุปกรณ์ระบบท่อ',
requirements: [
'ปริญญาตรี สาขาวิศวกรรมเครื่องกล วิศวกรรมโยธา หรือสาขาที่เกี่ยวข้อง',
'มีประสบการณ์อย่างน้อย 1-3 ปี ในตำแหน่ง Sales Engineer',
'มีความรู้ด้านท่อและอุปกรณ์ระบบท่อจะได้รับการพิจารณาเป็นพิเศษ',
'สามารถขับรถและมีใบขับขี่',
'มีทัศนคติดี กระตือรือร้น และสามารถทำงานเป็นทีมได้',
],
},
{
id: 'sales-representative',
title: 'Sales Representative',
titleTh: 'พนักงานขาย',
type: 'Full-time',
location: 'กรุงเทพมหานคร',
salary: 'เจรจาต่อรอง',
description: 'รับผิดชอบการขายผลิตภัณฑ์ท่อและอุปกรณ์ระบบท่อให้กับลูกค้าใหม่และลูกค้าเดิม',
requirements: [
'ปริญญาตรี สาขาใดก็ได้',
'มีประสบการณ์ด้านการขายอย่างน้อย 1 ปี',
'มีทักษะการสื่อสารที่ดี',
'สามารถขับรถและมีใบขับขี่',
'มีทัศนคติดี กระตือรือร้น',
],
},
];
export default function JoinUsPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Breadcrumb */}
<nav className="mb-6">
<ol className="flex items-center gap-2 text-sm">
<li>
<Link href="/" className="text-secondary-500 hover:text-primary-600">
</Link>
</li>
<li className="text-secondary-400">/</li>
<li className="text-primary-600 font-medium"></li>
</ol>
</nav>
{/* Header */}
<div className="mb-12 text-center">
<h1 className="text-3xl md:text-4xl font-bold text-secondary-900 mb-4">
</h1>
<p className="text-secondary-600 text-lg max-w-2xl mx-auto">
</p>
</div>
{/* Why Join Us */}
<div className="mb-12 bg-primary-50 rounded-xl p-8">
<h2 className="text-2xl font-bold text-secondary-900 mb-6 text-center">
?
</h2>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<div className="text-center">
<div className="w-16 h-16 bg-primary-600 rounded-full flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
<h3 className="text-lg font-bold text-secondary-900 mb-2"></h3>
<p className="text-secondary-600"></p>
</div>
<div className="text-center">
<div className="w-16 h-16 bg-primary-600 rounded-full flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z" />
</svg>
</div>
<h3 className="text-lg font-bold text-secondary-900 mb-2"></h3>
<p className="text-secondary-600"> </p>
</div>
<div className="text-center">
<div className="w-16 h-16 bg-primary-600 rounded-full flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" />
</svg>
</div>
<h3 className="text-lg font-bold text-secondary-900 mb-2"></h3>
<p className="text-secondary-600"></p>
</div>
</div>
</div>
{/* Open Positions */}
<div className="mb-12">
<h2 className="text-2xl font-bold text-secondary-900 mb-6">
</h2>
<div className="space-y-6">
{jobPositions.map((job) => (
<div key={job.id} className="bg-white rounded-xl p-6 shadow-card">
<div className="flex flex-col md:flex-row md:items-center md:justify-between mb-4">
<div>
<h3 className="text-xl font-bold text-secondary-900">
{job.title}
</h3>
<p className="text-primary-600">{job.titleTh}</p>
</div>
<div className="flex flex-wrap gap-2 mt-2 md:mt-0">
<span className="px-3 py-1 bg-secondary-100 text-secondary-700 rounded-full text-sm">
{job.type}
</span>
<span className="px-3 py-1 bg-secondary-100 text-secondary-700 rounded-full text-sm">
{job.location}
</span>
<span className="px-3 py-1 bg-primary-100 text-primary-700 rounded-full text-sm">
{job.salary}
</span>
</div>
</div>
<p className="text-secondary-600 mb-4">{job.description}</p>
<div className="mb-4">
<h4 className="font-semibold text-secondary-900 mb-2">:</h4>
<ul className="list-disc list-inside text-secondary-600 space-y-1">
{job.requirements.map((req, index) => (
<li key={index}>{req}</li>
))}
</ul>
</div>
<Link
href={`/sales-engineer`}
className="btn-primary inline-block"
>
</Link>
</div>
))}
</div>
</div>
{/* Contact */}
<div className="bg-secondary-100 rounded-xl p-8 text-center">
<h2 className="text-2xl font-bold text-secondary-900 mb-4">
?
</h2>
<p className="text-secondary-600 mb-6">
info@dealplustech.co.th
090-555-1415
</p>
<div className="flex justify-center gap-4">
<a href="mailto:info@dealplustech.co.th" className="btn-primary">
</a>
<Link href="/contact-us" className="btn-outline">
</Link>
</div>
</div>
</div>
</div>
);
}

101
src/app/pipe/page.tsx Normal file
View File

@@ -0,0 +1,101 @@
import Image from 'next/image';
import Link from 'next/link';
import { productCategories } from '@/data/site-config';
export const metadata = {
title: 'ท่อ | Pipe - ดีลพลัสเทค',
description: 'จำหน่ายท่อทุกประเภท ท่อ PPR ท่อ HDPE ท่อ PVC ท่อ uPVC ท่อไซเลอร์ คุณภาพสูง ราคาถูก',
};
// Pipe category product IDs
const pipeProductIds = [
'ppr-elephant',
'thai-ppr',
'poloplast',
'hdpe',
'upvc',
'pvc',
'syler',
'xylent',
'ppr-welder',
];
export default function PipePage() {
const pipeProducts = productCategories.filter(p => pipeProductIds.includes(p.id));
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Breadcrumb */}
<nav className="mb-6">
<ol className="flex items-center gap-2 text-sm">
<li>
<Link href="/" className="text-secondary-500 hover:text-primary-600">
</Link>
</li>
<li className="text-secondary-400">/</li>
<li className="text-primary-600 font-medium"> | Pipe</li>
</ol>
</nav>
{/* Header */}
<div className="mb-12">
<h1 className="text-3xl md:text-4xl font-bold text-secondary-900 mb-4">
| Pipe
</h1>
<p className="text-secondary-600 text-lg max-w-3xl">
PPR SCG HDPE PE80/PE100 PVC uPVC
.
</p>
</div>
{/* Products Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{pipeProducts.map((product) => (
<Link
key={product.id}
href={product.href}
className="card group"
>
<div className="relative aspect-video bg-secondary-100">
<Image
src={product.image}
alt={product.name}
fill
className="object-cover group-hover:scale-105 transition-transform duration-300"
/>
</div>
<div className="p-4">
<span className="text-xs text-primary-600 font-semibold">
{product.nameEn}
</span>
<h2 className="text-lg font-bold text-secondary-900 mt-1 group-hover:text-primary-600 transition-colors">
{product.name}
</h2>
<p className="text-sm text-secondary-600 mt-2 line-clamp-2">
{product.shortDescription || product.description}
</p>
</div>
</Link>
))}
</div>
{/* CTA */}
<div className="mt-12 text-center">
<p className="text-secondary-600 mb-4">
?
</p>
<div className="flex justify-center gap-4">
<Link href="/contact-us" className="btn-primary">
</Link>
<a href="tel:090-555-1415" className="btn-outline">
090-555-1415
</a>
</div>
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,146 @@
import Link from 'next/link';
export const metadata = {
title: 'Sales Engineer - วิศวกรฝ่ายขาย - ดีลพลัสเทค',
description: 'สมัครงานตำแหน่ง Sales Engineer ที่ดีลพลัสเทค รับผิดชอบการขายและให้คำปรึกษาด้านเทคนิคสำหรับผลิตภัณฑ์ท่อและอุปกรณ์ระบบท่อ',
};
export default function SalesEngineerPage() {
return (
<div className="pt-32 pb-16">
<div className="container mx-auto px-4">
{/* Breadcrumb */}
<nav className="mb-6">
<ol className="flex items-center gap-2 text-sm">
<li>
<Link href="/" className="text-secondary-500 hover:text-primary-600">
</Link>
</li>
<li className="text-secondary-400">/</li>
<li>
<Link href="/join-us" className="text-secondary-500 hover:text-primary-600">
</Link>
</li>
<li className="text-secondary-400">/</li>
<li className="text-primary-600 font-medium">Sales Engineer</li>
</ol>
</nav>
{/* Header */}
<div className="mb-8">
<div className="flex flex-wrap gap-2 mb-4">
<span className="px-3 py-1 bg-secondary-100 text-secondary-700 rounded-full text-sm">
Full-time
</span>
<span className="px-3 py-1 bg-secondary-100 text-secondary-700 rounded-full text-sm">
</span>
<span className="px-3 py-1 bg-primary-100 text-primary-700 rounded-full text-sm">
</span>
</div>
<h1 className="text-3xl md:text-4xl font-bold text-secondary-900 mb-2">
Sales Engineer
</h1>
<p className="text-xl text-primary-600"></p>
</div>
{/* Content */}
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
<div className="lg:col-span-2">
{/* Job Description */}
<div className="bg-white rounded-xl p-6 shadow-card mb-6">
<h2 className="text-xl font-bold text-secondary-900 mb-4">
</h2>
<p className="text-secondary-600 mb-4">
</p>
<h3 className="font-semibold text-secondary-900 mb-2">:</h3>
<ul className="list-disc list-inside text-secondary-600 space-y-2 mb-4">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
{/* Requirements */}
<div className="bg-white rounded-xl p-6 shadow-card mb-6">
<h2 className="text-xl font-bold text-secondary-900 mb-4">
</h2>
<ul className="list-disc list-inside text-secondary-600 space-y-2">
<li> </li>
<li> 1-3 Sales Engineer</li>
<li></li>
<li></li>
<li> </li>
<li></li>
</ul>
</div>
{/* Benefits */}
<div className="bg-white rounded-xl p-6 shadow-card">
<h2 className="text-xl font-bold text-secondary-900 mb-4">
</h2>
<ul className="list-disc list-inside text-secondary-600 space-y-2">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li> (-)</li>
<li> </li>
</ul>
</div>
</div>
{/* Sidebar */}
<div className="lg:col-span-1">
<div className="bg-primary-50 rounded-xl p-6 sticky top-24">
<h3 className="text-lg font-bold text-secondary-900 mb-4">
?
</h3>
<p className="text-secondary-600 mb-4">
:
</p>
<div className="space-y-4">
<a
href="mailto:info@dealplustech.co.th?subject=Apply for Sales Engineer Position"
className="btn-primary w-full block text-center"
>
</a>
<a
href="tel:090-555-1415"
className="btn-outline w-full block text-center"
>
090-555-1415
</a>
<Link
href="/contact-us"
className="btn-outline w-full block text-center"
>
</Link>
</div>
<div className="mt-6 pt-6 border-t border-primary-200">
<p className="text-sm text-secondary-600">
<strong>:</strong><br />
<br />
</p>
</div>
</div>
</div>
</div>
</div>
</div>
);
}