PageSourceSearch

https://www.go853.com/assets/AdminEstatesImport-BM_fwdWY.js

js go853.com collected 2026-10-08 12:48:08 UTC 21,007 bytes, 6 lines download raw bytes

1import{q as O,r,j as t,aq as C,ar as k,aQ as n,aR as c,bb as g,bc as h,ag as o,R as L,a8 as M,ai as q,a9 as z,bo as R,g as E}from"./index-5664YHSw.js";import{A as H}from"./AdminLayout-BIeF2nE3.js";import{B as W}from"./badge-BI3hJXfc.js";import{P as T}from"./progress-CYzwzc7L.js";import{I as _}from"./info-DhIxe6KM.js";import{U as Q}from"./upload-DqIB7AWF.js";import"./users-Cs5w--v_.js";import"./message-square-c4giF2Zc.js";import"./credit-card-BHk4EhYD.js";import"./scroll-text-5_Hs89s4.js";import"./brain-CoSI6ywp.js";import"./shield-check-Dev2JQ11.js";import"./code-xml-CZiH8lx2.js";import"./link-2-gIR7vc4R.js";/**
2 * @license lucide-react v0.453.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const V=O("FileSpreadsheet",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]]);function lt(){const[l,d]=r.useState("upload"),[i,N]=r.useState(null),[e,u]=r.useState(null),[m,f]=r.useState(null),[D,j]=r.useState(!1),[I,x]=r.useState(!1),b=r.useRef(null),y=s=>{if(!s.name.endsWith(".xlsx")&&!s.name.endsWith(".xls")){E.error("請上傳 .xlsx 或 .xls 格式的 Excel 文件");return}N(s)},F=s=>{s.preventDefault(),j(!1);const a=s.dataTransfer.files[0];a&&y(a)},P=async()=>{if(i){x(!0);try{const s=new FormData;s.append("file",i);const a=await fetch("/api/estates/import/preview",{method:"POST",body:s});if(!a.ok){const A=await a.json().catch(()=>({error:a.statusText}));throw new Error(A.error??`HTTP ${a.status}`)}const p=await a.json();u(p),d("preview")}catch(s){const a=s instanceof Error?s.message:"解析失敗";E.error("預覽失敗:"+a)}finally{x(!1)}}},U=async()=>{if(i){d("importing"),x(!0);try{const s=new FormData;s.append("file",i),s.append("batchSize","500");const a=await fetch("/api/estates/import/confirm",{method:"POST",body:s});if(!a.ok){const A=await a.json().catch(()=>({error:a.statusText}));throw new Error(A.error??`HTTP ${a.status}`)}const p=await a.json();f(p),d("done"),E.success(`導入完成!成功寫入 ${p.insertedCount.toLocaleString()} 個單位`)}catch(s){const a=s instanceof Error?s.message:"導入失敗";E.error("導入失敗:"+a),d("preview")}finally{x(!1)}}},w=()=>{d("upload"),N(null),u(null),f(null)},v=e?Math.round(e.matchedEstates/Math.max(e.totalEstateNames,1)*100):0,S=e?Math.round(e.matchedUnits/Math.max(e.totalUnits,1)*100):0,$=[{id:"upload",label:"1. 上傳文件"},{id:"preview",label:"2. 預覽匹配"},{id:"importing",label:"3. 導入中"},{id:"done",label:"4. 完成"}],B=["upload","preview","importing","done"];return t.jsx(H,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:172",children:t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:173",className:"p-6 max-w-4xl mx-auto space-y-6",children:[t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:175",className:"flex items-center gap-3",children:[t.jsx("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:176",className:"w-10 h-10 rounded-lg bg-orange-100 flex items-center justify-center",children:t.jsx(C,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:177",className:"w-5 h-5 text-orange-600"})}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:179",children:[t.jsx("h1",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:180",className:"text-xl font-bold text-gray-900",children:"物業登記局數據導入"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:181",className:"text-sm text-gray-500",children:"將 Excel 單位明細批量寫入 estate_units 表 · 支持重複導入(自動去重)"})]})]}),t.jsx("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:186",className:"flex items-center gap-2 text-sm flex-wrap",children:$.map((s,a)=>t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:188",className:"flex items-center gap-2",children:[t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:189",className:`px-3 py-1 rounded-full text-xs font-medium ${l===s.id?"bg-orange-500 text-white":B.indexOf(l)>a?"bg-green-100 text-green-700":"bg-gray-100 text-gray-500"}`,children:s.label}),a<3&&t.jsx(k,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:200",className:"w-3 h-3 text-gray-300"})]},s.id))}),t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:206",className:"border-blue-100 bg-blue-50",children:t.jsx(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:207",className:"pt-4 pb-4",children:t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:208",className:"flex gap-3",children:[t.jsx(_,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:209",className:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:210",className:"text-sm text-blue-800 space-y-1",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:211",className:"font-medium",children:"導入說明 · 名稱匹配 + UPSERT 策略"}),t.jsxs("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:212",children:["本工具將 Excel「單位æ
6˜Žç´°ã€Sheet 中的樓層/單位號數據寫入 ",t.jsx("code",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:212",className:"bg-blue-100 px-1 rounded",children:"estate_units"})," 表。"]}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:213",children:"匹配邏輯:Excel 樓盤名稱 → 精確匹配 → 去括號後綴匹配(如「永利軒 (住宅用途)」→「永利軒」)。同一屋苑可對應多個 descId。"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:214",className:"text-green-700 font-medium",children:"支持重複導入:每次上傳整份 Excel,系統自動去重。已有面積數據的單位不會被覆蓋。"})]})]})})}),l==="upload"&&t.jsxs(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:222",children:[t.jsx(g,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:223",children:t.jsx(h,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:224",className:"text-base",children:"上傳 Excel 文件"})}),t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:226",className:"space-y-4",children:[t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:227",className:`border-2 border-dashed rounded-xl p-12 text-center transition-colors cursor-pointer ${D?"border-orange-400 bg-orange-50":"border-gray-200 hover:border-orange-300 hover:bg-orange-50/50"}`,onDragOver:s=>{s.preventDefault(),j(!0)},onDragLeave:()=>j(!1),onDrop:F,onClick:()=>b.current?.click(),children:[t.jsx("input",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:236",ref:b,type:"file",accept:".xlsx,.xls",className:"hidden",onChange:s=>{const a=s.target.files?.[0];a&&y(a)}}),i?t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:247",className:"space-y-2",children:[t.jsx(V,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:248",className:"w-12 h-12 text-green-500 mx-auto"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:249",className:"font-medium text-gray-900",children:i.name}),t.jsxs("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:250",className:"text-sm text-gray-500",children:[(i.size/1024/1024).toFixed(1)," MB"]}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:251",className:"text-xs text-orange-600",children:"點擊重新選擇文件"})]}):t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:254",className:"space-y-2",children:[t.jsx(Q,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:255",className:"w-12 h-12 text-gray-300 mx-auto"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:256",className:"font-medium text-gray-700",children:"拖放 Excel 文件至此,或點擊選擇"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:257",className:"text-sm text-gray-400",children:"支持 .xlsx / .xls 格式 · 最大 50MB"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:258",className:"text-xs text-gray-400",children:"需包含「樓盤總表」和「單位明細」兩個 Sheet"})]})]}),i&&t.jsx(o,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:264",className:"w-full bg-orange-500 hover:bg-orange-600 text-white",onClick:P,disabled:I,children:I?t.jsxs(t.Fragment,{children:[t.jsx(L,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:271",className:"w-4 h-4 mr-2 animate-spin"}),"解析中(310,231 行需要約 30-60 秒)..."]}):t.jsxs(t.Fragment,{children:[t.jsx(k,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:276",className:"w-4 h-4 mr-2"}),"解析並預覽匹配結果"]}
6)})]})]}),l==="preview"&&e&&t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:288",className:"space-y-4",children:[t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:290",className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:291",children:t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:292",className:"pt-4 pb-4 text-center",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:293",className:"text-2xl font-bold text-gray-900",children:e.totalEstateNames.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:294",className:"text-xs text-gray-500 mt-1",children:"Excel 樓盤名稱"})]})}),t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:297",children:t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:298",className:"pt-4 pb-4 text-center",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:299",className:"text-2xl font-bold text-green-600",children:e.matchedEstates.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:300",className:"text-xs text-gray-500 mt-1",children:"成功匹配樓盤"})]})}),t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:303",children:t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:304",className:"pt-4 pb-4 text-center",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:305",className:"text-2xl font-bold text-orange-600",children:e.matchedUnits.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:306",className:"text-xs text-gray-500 mt-1",children:"可導入單位數"})]})}),t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:309",children:t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:310",className:"pt-4 pb-4 text-center",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:311",className:"text-2xl font-bold text-gray-400",children:e.unmatchedEstates.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:312",className:"text-xs text-gray-500 mt-1",children:"未匹配樓盤"})]})})]}),t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:318",children:t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:319",className:"pt-4 pb-4 space-y-3",children:[t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:320",className:"flex justify-between items-center",children:[t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:321",className:"font-medium text-sm",children:"樓盤名稱匹配率"}),t.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:322",className:"text-orange-600 font-bold",children:[v,"%"]})]}),t.jsx(T,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:324",value:v,className:"h-3"}),t.jsxs("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:325",className:"text-xs text-gray-500",children:[e.matchedEstates," / ",e.totalEstateNames," 個樓盤名稱在數據庫中找到對應記錄"]}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:328",className:"flex justify-between items-center pt-1",children:[t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:329",className:"font-medium text-sm",children:"單位匹配率"}),t.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:330",className:"text-green-600 font-bold",children:[S,"%"]})]}),t.jsx(T,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:332",value:S,className:"h-3"}),t.jsxs("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:333",className:"text-xs text-gray-500",children:[e.matchedUnits.toLocaleString()," / ",e.totalUnits.toLocaleString()," 個單位可導入"]})]})}),e.matchedSample.length>0&&t.jsxs(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:341",children:[t.jsx(g,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:342",className:"pb-2",children:t.jsxs(h,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:343",className:"text-sm flex items-center gap-2",children:[t.jsx(M,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:344",className:"w-4 h-4 text-green-500"}),"匹配成功樣本(前 ",e.matchedSample.length," 條)"]})}),t.jsx(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:348",children:t.jsx("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:349",className:"space-y-1",children:e.matchedSample.map((s,a)=>t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:351",className:"flex items-center gap-2 text-sm py-1.5 border-b border-gray-50 flex-wrap",children:[t.jsx(W,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:352",variant:"outline",className:`text-xs ${s.matchType==="精確匹配"?"border-green-200 text-green-700 bg-green-50":"border-blue-200 text-blue-700 bg-blue-50"}`,children:s.matchType}),t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:362",className:"text-gray-700 font-medium",children:s.excelName}),s.excelName!==s.dbName&&t.jsxs(t.Fragment,{children:[t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:365",className:"text-gray-400",children:"→"}),t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:366",className:"text-green-600",children:s.dbName})]}),t.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:369",className:"text-gray-400 text-xs ml-auto",children:["estateId:",s.estateId," · ",s.unitCount.toLocaleStr
6ing()," 單位"]})]},a))})})]}),e.unmatchedSample.length>0&&t.jsxs(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:381",children:[t.jsx(g,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:382",className:"pb-2",children:t.jsxs(h,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:383",className:"text-sm flex items-center gap-2",children:[t.jsx(q,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:384",className:"w-4 h-4 text-yellow-500"}),"未匹配樣本(前 ",e.unmatchedSample.length," 條,這些樓盤的單位將被跳過)"]})}),t.jsx(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:388",children:t.jsx("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:389",className:"space-y-1",children:e.unmatchedSample.map((s,a)=>t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:391",className:"flex items-center gap-2 text-sm py-1.5 border-b border-gray-50",children:[t.jsx("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:392",className:"text-gray-500",children:s.name}),t.jsxs("span",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:393",className:"text-gray-400 text-xs ml-auto",children:[s.unitCount.toLocaleString()," 單位"]}),t.jsx(z,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:396",className:"w-3 h-3 text-red-400"})]},a))})})]}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:405",className:"flex gap-3",children:[t.jsxs(o,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:406",variant:"outline",onClick:w,className:"flex-1",children:[t.jsx(R,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:407",className:"w-4 h-4 mr-2"}),"重新選擇文件"]}),t.jsxs(o,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:410",className:"flex-1 bg-orange-500 hover:bg-orange-600 text-white",onClick:U,disabled:I,children:[t.jsx(C,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:415",className:"w-4 h-4 mr-2"}),"確認導入 ",e.matchedUnits.toLocaleString()," 個單位"]})]})]}),l==="importing"&&t.jsx(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:424",children:t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:425",className:"pt-8 pb-8 text-center space-y-4",children:[t.jsx(L,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:426",className:"w-12 h-12 text-orange-500 mx-auto animate-spin"}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:427",className:"font-medium text-gray-900",children:"正在批量導入數據..."}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:428",className:"text-sm text-gray-500",children:"225,000+ 個單位需要約 2-5 分鐘,請勿關閉頁面"})]})}),l==="done"&&m&&t.jsxs(n,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:435",className:"border-green-100",children:[t.jsx(g,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:436",children:t.jsxs(h,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:437",className:"text-base flex items-center gap-2",children:[t.jsx(M,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:438",className:"w-5 h-5 text-green-500"}),"導入完成!"]})}),t.jsxs(c,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:442",className:"space-y-4",children:[t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:443",className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-center",children:[t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:444",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:445",className:"text-2xl font-bold text-green-600",children:m.estatesProcessed.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:446",className:"text-xs text-gray-500",children:"處理屋苑數"})]}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:448",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:449",className:"text-2xl font-bold text-orange-600",children:m.insertedCount.toLocaleStr
6ing()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:450",className:"text-xs text-gray-500",children:"寫入單位數"})]}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:452",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:453",className:"text-2xl font-bold text-gray-400",children:m.skippedCount.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:454",className:"text-xs text-gray-500",children:"跳過(未匹配)"})]}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:456",children:[t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:457",className:"text-2xl font-bold text-blue-600",children:m.totalEstatesMatched.toLocaleString()}),t.jsx("p",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:458",className:"text-xs text-gray-500",children:"匹配屋苑總數"})]})]}),t.jsxs("div",{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:461",className:"flex gap-3 justify-center",children:[t.jsxs(o,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:462",variant:"outline",onClick:w,children:[t.jsx(R,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:463",className:"w-4 h-4 mr-2"}),"再次導入(更新版本)"]}),t.jsx(o,{"data-loc":"client\\src\\pages\\admin\\AdminEstatesImport.tsx:466",className:"bg-orange-500 hover:bg-orange-600 text-white",onClick:()=>window.location.href="/admin/estates/list",children:"前往樓盤庫管理查看"})]})]})]})]})})}export{lt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.