/* eslint-disable */ const { useState, useEffect, useRef, useMemo } = React; /* ============== Hooks ============== */ function useReveal() { useEffect(() => { const els = document.querySelectorAll(".reveal"); const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add("in"); io.unobserve(e.target); } }); }, { threshold: 0.12 }); els.forEach((el) => io.observe(el)); return () => io.disconnect(); }, []); } function useCountUp(target, duration = 1600, trigger = true) { const [val, setVal] = useState(0); useEffect(() => { if (!trigger) return; let raf, start; const step = (ts) => { if (!start) start = ts; const p = Math.min((ts - start) / duration, 1); const eased = 1 - Math.pow(1 - p, 3); setVal(Math.round(eased * target)); if (p < 1) raf = requestAnimationFrame(step); }; raf = requestAnimationFrame(step); return () => cancelAnimationFrame(raf); }, [target, duration, trigger]); return val; } function useInView(ref, threshold = 0.2) { const [inView, setInView] = useState(false); useEffect(() => { if (!ref.current) return; const io = new IntersectionObserver(([e]) => { if (e.isIntersecting) { setInView(true); io.disconnect(); } }, { threshold }); io.observe(ref.current); return () => io.disconnect(); }, [ref, threshold]); return inView; } /* ============== TopBar ============== */ function TopBar() { return (
{ e.preventDefault(); window.scrollTo({ top: 0, behavior: "smooth" }); }}> 行政書士法人Tree
行政書士法人Tree GYOSEISHOSHI HOJIN TREE
無料相談を予約
); } /* ============== Hero ============== */ function Hero() { return (
公共入札に挑む、建設業の経営者へ

入札参加資格申請を、
一律料金で代行。

全省庁統一資格・全国の自治体・公社まで、行政書士法人Treeが対応。
追加費用なしのわかりやすい料金体系で、煩雑な公共入札の準備を整えます。

一律料金・追加費用なし 税抜・実費別
※ 実費は、必要書類(登記簿・納税証明書等)の取得費用、郵送費等のみ発生します。
※ 経審とセットで1自治体目 −¥10,000 割引(自動適用)。
入札参加資格申請全省庁/自治体 共通・1件あたり
¥35,000
10件以上は10件ごとに −¥1,500 / 100件以上 ¥20,000/件(税抜)
必要に応じて
電子証明書の取得※ICカード・カードリーダー実費別
¥33,000
自治体システムへの紐づけ1自治体あたり
¥16,500
※ ご相談はいつでも何度でも無料・秘密厳守。営業電話は一切いたしません。
SCROLL
); } /* ============== Crisis ============== */ function Crisis() { return (
こんな課題、ありませんか?
毎年の申請業務で、現場が止まる
自治体ごとに様式が違い、ミスが怖い
経審の点数を上げたいが、何から手をつけるか分からない
他社の見積りが不透明・追加請求が不安
); } /* ============== Reasons ============== */ function Reasons() { return (
WHY TREE

建設業の経営者が、
Treeを選ぶ六つの理由

価格・スピード・カバレッジ——明朗会計と専任体制で、入札参加資格申請を確かな品質で進めます。

REASON 01
ダブルチェック
専任2名の品質体制
担当者と確認者の2名体制で書類を相互チェック。差戻し・却下を防ぐため、提出前に複数の目で精査します。
REASON 02
¥35,000
一律料金、
まとめ申請で値引
入札参加資格申請は1件あたり ¥35,000(全省庁・自治体問わず)。10件以上は10件ごとに −¥1,500、100件以上は ¥20,000/件 まで段階的にお値引きいたします。HP掲載価格と実費以外の追加請求は一切ありません。ご相談はいつでも何度でも無料です。
REASON 03
47都道府県
全国の発注機関に
対応可能
北海道から沖縄まで、47都道府県+市区町村+公社・独立行政法人まで対応可能。本社の所在地を問わず、全国の入札に参加できます。
REASON 04
迅速対応
スピード対応・
電子申請完全対応
急な指名・突発的な案件にも、迅速な書類整備でスピーディに対応。電子申請(gBizID)にも完全対応し、ペーパーレスで完結します。
REASON 05
経審
決算変更届+経審を
一貫サポート
毎年の決算変更届から経審の点数アップコンサル・申請代行まで、当事務所が一貫対応。技術職員・完工高の戦略設計から伴走し、入札参加資格申請とセットでご依頼の場合は 1自治体目 −¥10,000 割引いたします。
REASON 06
専任担当
担当行政書士による
伴走サポート
資格取得後の更新申請、決算変更届、追加申請など、入札参加資格に関連する継続的な手続きを専任担当が承ります。LINE・メール・電話でいつでもご相談いただけます。
); } /* ============== Service ============== */ function Service() { const regions = ["北海道", "東北", "関東", "中部", "近畿", "中国", "四国", "九州", "沖縄", "札幌", "仙台", "東京", "横浜", "名古屋", "大阪", "広島", "福岡"]; return (
SERVICES

対応範囲は、
日本全国・全行政機関

国・地方自治体・公社・独立行政法人・特殊法人——あらゆる発注機関の入札参加資格申請に対応します。

対応可能な発注機関
NATIONWIDE COVERAGE
全国対応可
全省庁統一資格 + 47都道府県 + 全国市区町村
{regions.map((r) => (
{r}
))}
※ 公共建築・土木・設備・物品・役務、すべての業種に対応。 地元自治体に縛られず、本社所在地を問わず全国の入札へ参加可能。
{[ { num: "01", name: "入札参加資格申請", desc: "全省庁・自治体すべて同条件/10件以上は段階値引/事前調査・お見積り無料", price: "¥35,000", small: "1件あたり・税抜" }, { num: "02", name: "電子証明書の取得", desc: "電子入札・電子申請に必要な電子証明書を代行取得", price: "¥33,000", small: "税抜・実費別" }, { num: "03", name: "自治体システムへの紐づけ", desc: "電子証明書を各自治体システムに登録", price: "¥16,500", small: "1自治体あたり・税抜" }, { num: "04", name: "決算変更届+経審サポート", desc: "決算変更届から経審のコンサル+申請代行まで一貫対応", price: "¥150,000", small: "税抜・一式" }, { num: "05", name: "建設業許可(新規・更新)", desc: "知事許可・大臣許可いずれも対応", price: "¥100,000", small: "税抜・実費別" }, ].map((s) => (
{s.num}
{s.name}
{s.desc}
{s.price}{s.small}
))}
); } /* ============== Synergy (経審 × 入札) ============== */ function Synergy() { return (
SYNERGY / 経審 × 入札参加資格

ランクが上がれば、
応札できる案件が増える。

入札参加資格は「持っているだけ」では十分ではありません。工事種別ごとに付与される等級(A・B・C・D)によって、応札できる工事金額の上限が決まります。行政書士法人Treeは、経営事項審査(経審)の事前シミュレーションでランクアップの余地を分析し、戦略的に「狙える発注機関・工事規模」を広げます。

経審
01
事前シミュレーション
現在のP点・等級を分析。技術職員・財務指標・社会性の各項目で、加点余地を可視化します。
経審
02
ランクアップ設計
技術者の追加登録・建退共加入・社会性加点等、貴社に最適な打ち手を順序立てて提案します。
入札
03
戦略的な入札参加
上がった等級で「狙うべき発注機関・工事種別」を選定。指名願をまとめて代行します。
経審 × 入札を、同じ専任担当が一貫サポート
経審の点数設計から入札参加資格の取得まで、別々の担当者に説明し直す手間はありません。点数のシナジーを最大化するご提案を行います。
経審サポートの詳細を見る
); } /* ============== Pricing + Simulator ============== */ function Pricing() { return (
PRICING

一律料金
追加費用は、一切いただきません。

入札参加資格申請は 1件あたり ¥35,000(税抜・全省庁/自治体共通) の一律料金。ご相談はいつでも何度でも無料。事前調査・お見積りも料金内に含まれます。10件以上のまとめ申請で段階値引あり。実費(証紙・登録免許税)以外の追加請求は一切ありません。

PLAN
入札参加資格申請
一律料金・追加費用なし。件数に応じた段階的なお値引きで、まとめての申請ほどお得に。
1 〜 9 件
¥35,000/1件
標準価格
10 件以上
10件ごとに −¥1,500/1件 値引
段階値引
100 件以上
¥20,000/1件
最終単価
※ 税抜・実費別。全省庁統一資格・自治体(規模問わず)すべて同条件でカウント。10〜19件 ¥33,000 / 20〜29件 ¥31,500 / 50件 ¥27,000 / 90件 ¥21,000……と段階的に下がり、100件以上で ¥20,000 に底打ちします。
※ 実費は、必要書類(登記簿謄本・納税証明書・身分証明書等)の取得費用、郵送費等のみ発生します。お見積り時に内訳をご提示いたします。
SET DEAL
決算変更届+経審セット割引 −¥10,000
決算変更届+経審サポートと入札参加資格申請をセットでご依頼の場合、入札参加資格申請の 1自治体目を ¥10,000 引きでご提供します。決算変更届の対応は必須となります(毎年の決算後の届出から経審まで一貫対応)。経審LPの詳細を見る →
プランに含まれるもの
  • ご相談はいつでも何度でも無料
  • 事前調査・お見積り(料金内)
  • 申請書類一式の作成
  • 電子申請(gBizID)対応
  • 専任担当による伴走サポート
  • 更新・継続申請のご相談
必要に応じて承る関連サービス
  • 電子証明書の取得¥33,000※ICカード・カードリーダー実費別
  • 自治体システムへの紐づけ¥16,5001自治体あたり
  • 決算変更届¥30,000毎年の決算後・1期分
  • 決算変更届+経審サポート¥150,000決算変更届+経審コンサル+申請代行(入札セットで −¥10,000)
  • 建設業許可(新規・更新)¥100,000知事・大臣許可いずれも対応
無料相談を予約する 概算をシミュレーション
); } function Plan({ name, title, price, sub, features, cta, badge, featured }) { return (
{badge &&
{badge}
}
{name}
{title}
{price}
{sub}
{features.map((f, i) =>
{f}
)}
{cta} →
); } function Simulator() { const [appCount, setAppCount] = useState(1); const [cert, setCert] = useState(false); const [linkCount, setLinkCount] = useState(0); const [keishin, setKeishin] = useState(false); const calcRate = (count) => { if (count >= 100) return 20000; if (count < 10) return 35000; const step = Math.floor((count - 10) / 10); return 33000 - step * 1500; }; const tierRate = calcRate(appCount); const tierLabel = appCount >= 100 ? "最終単価" : appCount >= 10 ? `段階値引(標準比 −¥${(35000 - tierRate).toLocaleString()})` : "標準価格"; const calc = useMemo(() => { const apps = appCount * tierRate; const certFee = cert ? 33000 : 0; const link = linkCount * 16500; const k = keishin ? 150000 : 0; // 決算変更届+経審セット割:ONかつ入札1件以上で 1自治体目を ¥10,000 引き const setDiscount = (keishin && appCount >= 1) ? 10000 : 0; const sub = apps + certFee + link + k - setDiscount; const tax = Math.round(sub * 0.1); return { apps, certFee, link, k, setDiscount, sub, tax, total: sub + tax }; }, [appCount, cert, linkCount, keishin, tierRate]); return (
わずか4項目で、概算がわかる
FEE SIMULATOR — 入力後、即座に概算が表示されます
申請件数(全省庁・自治体 共通) {appCount} 件 × ¥{tierRate.toLocaleString()}
setAppCount(+e.target.value)} className="sim-slider" />
1〜9件 ¥35,000 {" / "} = 10 && appCount < 100 ? "sim-tier sim-tier--active" : "sim-tier"}>10件〜 10件ごと −¥1,500 {" / "} = 100 ? "sim-tier sim-tier--active" : "sim-tier"}>100件以上 ¥20,000
現在:{tierLabel}(1件あたり ¥{tierRate.toLocaleString()})
電子証明書の取得 {cert ? "必要(+¥33,000)" : "不要"}
※ICカード・カードリーダー実費別
自治体システムへの紐づけ件数 {linkCount} 件 / +¥{(linkCount * 16500).toLocaleString()}
setLinkCount(+e.target.value)} className="sim-slider" />
1自治体あたり ¥16,500(電子証明書を各システムに登録する作業)
決算変更届+経審サポート {keishin ? "ON" : "OFF"}
※ 決算変更届+経審サポートをセットでご依頼の場合、入札参加資格申請1自治体目を −¥10,000 割引いたします(自動適用)。
CONCEPTUAL TOTAL
¥{calc.total.toLocaleString()}
税込・実費別
申請代行 ({appCount}件 × ¥{tierRate.toLocaleString()}) ¥{calc.apps.toLocaleString()}
電子証明書取得 ¥{calc.certFee.toLocaleString()}
自治体紐づけ ({linkCount}件) ¥{calc.link.toLocaleString()}
決算変更届+経審サポート ¥{calc.k.toLocaleString()}
{calc.setDiscount > 0 && (<>経審セット割引 −¥{calc.setDiscount.toLocaleString()}
)} 消費税 ¥{calc.tax.toLocaleString()}
この内容で見積依頼 →
); } /* ============== Scope (業務範囲・対応内容) ============== */ function Scope() { const appSteps = [ { num: "01", title: "要件・様式調査", desc: "対象自治体の申請受付期間・必要書類・独自様式を確認。事業者様の業種・実績に応じた最適な申請内容を整理します。" }, { num: "02", title: "必要書類の収集", desc: "履歴事項全部証明書(登記簿)、納税証明書、営業経歴書、経審通知書、決算書類など。行政書士が直接取得可能な書類は弊所で代行します。" }, { num: "03", title: "申請書類の作成", desc: "自治体独自の申請書様式への記入・業種別の記載・添付書類の整理。担当者と確認者の専任2名でダブルチェックを行います。" }, { num: "04", title: "電子申請または郵送提出", desc: "電子申請対応自治体は gBizID/電子証明書を用いてシステム入力+電子署名で送信。郵送対応の自治体は書類整備+発送まで対応します。" }, { num: "05", title: "不備対応・追完", desc: "自治体からの照会・追加書類要求・修正対応をすべて弊所で対応。お客様の負担はゼロです。" }, { num: "06", title: "認定通知の受領・納品", desc: "資格認定通知書を受領後、お客様へ納品。資格番号・有効期限・対象業種等を整理した一覧をあわせてお渡しします。" }, ]; return (
SCOPE / 業務範囲・対応内容

何の費用か」を、
すべて明らかに。

料金の内訳を「業務」レベルで開示します。必要な業務だけを、必要な分だけご依頼いただける建て付けです。

SERVICE A
入札参加資格申請(1自治体あたり)
¥35,000〜(10件以上は段階値引)
「入札に参加できる事業者」として自治体に登録してもらうための、書類作成・提出を 弊所で全工程代行 します。ご相談はいつでも何度でも無料。事前調査・お見積りも料金内に含まれます。
{appSteps.map((s) => (
{s.num}
{s.title}
{s.desc}
))}
SERVICE B
自治体システムへの紐づけ(1自治体あたり)
¥16,500/1自治体
取得済みの電子証明書を 各自治体の電子入札システムに「利用者登録」する作業 です。資格申請後、実際に電子入札できる状態にするための設定を代行します。
具体的な作業内容
  • 利用者登録申請自治体の電子入札システムに「使う人」として登録するオンライン申請
  • 証明書情報の登録取得済み電子証明書のシリアル番号等をシステムに入力
  • ICカード初期設定カードリーダーの設定・接続確認
  • テスト送信・動作確認システム接続テストを実施
  • 自治体への通知一部自治体で必要となる書面通知も対応
必要なケース
  • 電子入札に参加したい自治体がある
  • 自治体ごとの設定作業に時間を割きたくない
  • 複数自治体での電子入札を予定している
不要なケース
  • 紙入札のみで参加する自治体
  • 全省庁統一資格のみ取得する場合
  • お客様自身でシステム登録される場合
必須サービスではありません。必要な自治体分のみご依頼いただけます。全省庁統一資格は GEPS(政府電子調達システム)一本で済むため、紐づけ¥0です。
「申請」と「紐づけ」を分けてご提示するのは、
必要な業務だけを、必要な分だけご依頼いただきたいから。
業務範囲を相談する
); } /* ============== Flow ============== */ function Flow() { const steps = [ { num: "壱", title: "無料相談(オンライン可)", desc: "現状ヒアリング、対象機関の整理、概算見積りをご提示。お申込み前に料金が確定するので安心です。", time: "随時受付" }, { num: "弐", title: "ご契約・お申込み", desc: "電子契約で完結。書類取得のための委任状・必要書類リストを即時お送りします。", time: "速やかに" }, { num: "参", title: "書類収集・作成(弊所主導)", desc: "登記簿・納税証明・財務諸表など、行政書士が直接取得。お客様の手間は最小限。", time: "弊所主導" }, { num: "肆", title: "ダブルチェック・申請", desc: "専任2名で書類を相互チェック。電子申請(gBizID)で送信し、進捗をリアルタイム共有。", time: "提出前点検" }, { num: "伍", title: "資格取得・継続サポート", desc: "資格通知書を受領し納品。以降の更新・継続申請、変更届などのご相談も専任担当が承ります。", time: "継続伴走" }, ]; return (
FLOW

煩雑な手続きを、
全5ステップでクリアに

煩雑な手続きはすべて弊所で巻き取ります。お客様にお願いするのは「最初のヒアリング」と「電子契約への押印」だけ。

OUR APPROACH
迅速 + 丁寧。
対象機関数・繁忙期や発注機関の処理状況により所要期間は変動しますが、可能な限り迅速に書類整備・提出までを進めます。お急ぎの案件は別途ご相談ください。
{steps.map((s) => (
{s.num}
{s.title}
{s.desc}
{s.time}
))}
); } /* ============== Cases ============== */ function Cases() { const cases = [ { industry: "土木工事業 / 創業32年", quote: "他社の半額以下で、しかも経審が+108点。来年度の工事規模が一段階上がりました。", name: "K.H 様", company: "中堅ゼネコン・専務取締役", avatar: "土", label: "経審点数", value: "+108点", }, { industry: "管工事業 / 従業員12名", quote: "全国の自治体に登録できたおかげで、地元案件の閑散期も埋まるように。年商1.6倍。", name: "Y.S 様", company: "中部地方・管工事会社・代表", avatar: "管", label: "売上推移", value: "1.6×", }, { industry: "電気工事業 / 創業7年", quote: "突然の指名で焦りましたが3日で資格取得。落札につながり救われました。", name: "T.M 様", company: "電気工事会社・代表取締役", avatar: "電", label: "対応スピード", value: "3営業日", }, { industry: "建築一式工事 / 創業55年", quote: "毎年の更新作業で社員が疲弊していたが、丸ごとお任せできて事務負担が激減。", name: "N.T 様", company: "老舗工務店・代表取締役社長", avatar: "建", label: "事務時間削減", value: "−92%", }, ]; return (
CASES

数字で語る、
お客様の声

業種・規模・地域を問わず、確かな成果を。一部のお客様の声をご紹介します。

{cases.map((c, i) => (
{c.industry}
{c.quote}
{c.avatar}
{c.name}
{c.company}
{c.label}
{c.value}
))}
); } /* ============== FAQ ============== */ function FAQ() { const items = [ { q: "全国どこの自治体でも対応できますか?", a: "はい。北海道から沖縄まで、47都道府県・1,741市区町村・各種公社・独立行政法人まで対応しております。本社の所在地を問わず、全国の入札にご参加いただけます。" }, { q: "費用は本当に表示価格だけですか?追加請求はありませんか?", a: "原則として、HP記載の価格と実費(証紙代・登録免許税等)以外の追加請求はございません。万一、業務範囲外の作業が必要な場合は、必ず事前にお見積りをご提示し、ご了承いただいた上で着手します。" }, { q: "急ぎの案件には対応できますか?", a: "電子申請(gBizID)対応の機関であれば、書類整備・提出までを可能な限り迅速に進めます。発注機関側の処理期間は弊所では制御できませんが、お急ぎの事情はヒアリング時にお伝えください。スケジュール感をご一緒に整理いたします。" }, { q: "経審の点数アップは具体的に何をしてくれますか?", a: "技術職員数・完工高・財務諸表の整え方を分析し、点数を上げるための具体的な改善策をご提案します。決算期の組み替え、職員配置、業種選択など多角的に検討し、伴走サポートします。" }, { q: "建設業許可をまだ持っていません。一緒に取れますか?", a: "もちろんです。建設業許可(知事・大臣)の新規取得から経審・入札参加資格まで、当事務所で一貫して対応いたします。建設業許可は ¥100,000(税抜・実費別)で承ります。" }, { q: "他県の入札に参加するには本社移転が必要ですか?", a: "いいえ、不要です。全省庁統一資格や各自治体の入札参加資格は、本社所在地に関わらず取得可能です。地元の枠を超えて、全国の入札に挑戦するお客様が増えています。" }, { q: "オンラインのみで完結できますか?", a: "はい。電子契約・電子申請・オンラインMTGに完全対応していますので、ご来所不要で全国どこからでもご依頼いただけます。Zoom・Teams・Google Meetに対応。" }, ]; return (
FAQ

よくあるご質問

建設業の経営者から実際に寄せられたご質問にお答えします。ここに無いご質問も、無料相談で何でもお聞きください。

{items.map((it, i) => )}
); } function FAQItem({ q, a }) { const [open, setOpen] = useState(false); return (
{a}
); } /* ============== Related ============== */ function Related() { const items = [ { num: "01", title: "経営事項審査(経審)", desc: "公共工事の入札参加に必須。決算変更届とあわせて毎年対応します。", href: "https://office-tree.jp/lp/keishin/" }, { num: "02", title: "建設業許可(新規・更新)", desc: "知事許可・大臣許可いずれも対応。業種追加・般特新規もサポート。", href: "https://office-tree.jp/kensetsu" }, { num: "03", title: "産業廃棄物収集運搬業 許可", desc: "建設現場から発生する廃棄物を、自社で運搬する場合に必要な許可。", href: "https://office-tree.jp/lp/sanpai/" }, { num: "04", title: "宅建業免許申請", desc: "不動産業(売買・賃貸の仲介等)を営むための都道府県知事・国土交通大臣免許の申請を代行します。", href: "https://office-tree.jp/lp/takuken/" }, { num: "05", title: "補助金申請(建設業向け)", desc: "完全成果報酬型・着手金0円。不採択時は完全無料でリスクなし。", href: "https://office-tree.jp/hojokin/" }, { num: "06", title: "会社設立・法人設立", desc: "個人事業主から法人成りされる方向け。建設業許可・入札参加とあわせて法人化をサポートします。", href: "https://office-tree.jp/lp/kensetsu-setup/" }, ]; return ( ); } /* ============== Blog (建設業関連を自動取得) ============== */ function Blog() { const [posts, setPosts] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetch("/blog/category/construction/", { credentials: "same-origin" }) .then((res) => res.text()) .then((html) => { const doc = new DOMParser().parseFromString(html, "text/html"); const articles = doc.querySelectorAll("article.post-card"); const items = Array.from(articles).slice(0, 3).map((art) => { const a = art.querySelector("a[itemprop='url']"); const img = art.querySelector("img"); const title = art.querySelector(".post-card-title")?.textContent.trim() || ""; const cat = art.querySelector(".post-card-category")?.textContent.trim() || "建設業関連"; const time = art.querySelector("time"); const date = time?.textContent.trim() || ""; return { url: a?.getAttribute("href") || "https://office-tree.jp/blog/category/construction/", title, cat, date, thumb: img?.getAttribute("src") || img?.getAttribute("data-src") || "", }; }); setPosts(items); setLoading(false); }) .catch((err) => { console.warn("Blog fetch error:", err); setLoading(false); }); }, []); return (
JOURNAL

建設業の
最新ノウハウ

建設業許可・経審・入札関連の実務コラムを、Tree公式ブログから自動掲載しています。

{loading ? (
記事を読み込んでいます…
) : posts.length === 0 ? (
記事を取得できませんでした。 公式ブログを見る →
) : (
{posts.map((p, i) => (
{p.cat}
{p.date}
{p.title}
))}
)}
建設業関連の記事をすべて見る
); } /* ============== Form ============== */ function ContactForm() { const [step, setStep] = useState(0); const [data, setData] = useState({ services: [], company: "", name: "", email: "", phone: "", region: "", message: "", }); const [done, setDone] = useState(false); const [errors, setErrors] = useState({}); const setField = (k, v) => { setData((d) => ({ ...d, [k]: v })); setErrors((e) => ({ ...e, [k]: undefined })); }; const toggleSvc = (s) => { setData((d) => ({ ...d, services: d.services.includes(s) ? d.services.filter((x) => x !== s) : [...d.services, s] })); setErrors((e) => ({ ...e, services: undefined })); }; const validateStep = (s) => { const errs = {}; if (s === 0) { if (data.services.length === 0) errs.services = "少なくとも1つご選択ください"; } else if (s === 1) { if (!data.company.trim()) errs.company = "会社名をご入力ください"; if (!data.name.trim()) errs.name = "ご担当者名をご入力ください"; if (!data.email.trim()) errs.email = "メールアドレスをご入力ください"; else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email.trim())) errs.email = "正しいメールアドレスをご入力ください"; if (!data.phone.trim()) errs.phone = "お電話番号をご入力ください"; else if (!/^[\d\-+()\s]{8,}$/.test(data.phone.trim())) errs.phone = "正しい電話番号をご入力ください"; } return errs; }; const next = () => { const errs = validateStep(step); if (Object.keys(errs).length > 0) { setErrors(errs); return; } setErrors({}); setStep((s) => Math.min(s + 1, 2)); }; const prev = () => { setErrors({}); setStep((s) => Math.max(s - 1, 0)); }; const [submitting, setSubmitting] = useState(false); const [submitError, setSubmitError] = useState(""); const submit = async (e) => { e.preventDefault(); if (submitting) return; // 二重送信防止 const allErrs = { ...validateStep(0), ...validateStep(1) }; if (Object.keys(allErrs).length > 0) { setErrors(allErrs); const firstStep = validateStep(0); setStep(Object.keys(firstStep).length > 0 ? 0 : 1); return; } setSubmitError(""); setSubmitting(true); // form の hidden inputs から FormData を構築(フィールド名は kensetsu LP と完全一致) const fd = new FormData(e.target); try { // /lp_send へ POST(kensetsu と同じ inc/lp_send.inc が DB 登録+メール送信を実行) const res = await fetch("/lp_send", { method: "POST", body: fd, credentials: "same-origin" }); if (!res.ok) throw new Error("status " + res.status); // 成功 → コンバージョン発火 → in-app 完了画面表示(ページ遷移なし) try { if (typeof window.gtag === "function") { window.gtag("event", "conversion", { send_to: "AW-11120951371/S8wcCMbQzakYEMuA8bYp" }); } if (typeof window.ytag === "function") { window.ytag({ type: "yss_conversion", config: { yahoo_conversion_id: "1001259030", yahoo_conversion_label: "AdhzCIC_xscbELy92-0o", yahoo_conversion_value: "2000" } }); } if (window.dataLayer) { window.dataLayer.push({ event: "form_submit", form_name: "nyusatsu_contact" }); } } catch (err) { console.warn("Conversion tag error:", err); } setDone(true); } catch (err) { console.warn("Submit error:", err); setSubmitError("送信中にエラーが発生しました。お電話・メール・LINEでもご相談いただけます。"); setSubmitting(false); } }; if (done) { return (
受付
お問合せを受け付けました
営業時間内に、専任担当より速やかにご連絡いたします。
営業時間外のお問合せは、翌営業日以降のご対応となります。
); } return (
{/* kensetsu LP と同じ送信スペック: hidden inputs */} {/* honeypot (kensetsu LP と同じ) */}
{["ご希望サービス", "ご連絡先", "ご相談内容"].map((label, i) => ( ))}
ご希望のサービス(複数選択可)必須
{["入札参加資格申請(官庁・自治体)", "決算変更届+経審サポート", "建設業許可(新規・更新)", "産業廃棄物収集運搬業 許可", "宅建業免許申請", "補助金申請(建設業向け)", "会社設立・法人設立"].map((s) => ( ))}
{errors.services &&
{errors.services}
}
会社名必須
setField("company", e.target.value)} placeholder="株式会社○○建設" /> {errors.company &&
{errors.company}
}
ご担当者名必須
setField("name", e.target.value)} placeholder="山田 太郎" /> {errors.name &&
{errors.name}
}
メールアドレス必須
setField("email", e.target.value)} placeholder="example@company.co.jp" /> {errors.email &&
{errors.email}
}
お電話番号必須
setField("phone", e.target.value)} placeholder="042-404-2927" /> {errors.phone &&
{errors.phone}
}
本社所在地
ご相談内容