PageSourceSearch

https://zahit-pro-v2.pages.dev/assets/admin.identities-Cvzt0I6i.js

js zahit-pro-v2.pages.dev collected 2026-10-03 06:03:15 UTC 24,276 bytes, 1 lines download raw bytes

1import{j as e}from"./jsx-runtime-0DLF9kdB.js";import{r as f,u as P}from"./index-DM-Ysix_.js";import{c as E}from"./cn-fNskMoFt.js";import{u as U,a as B,L as V,F as b}from"./components-C61DWoh4.js";const T=["GUEST","NANO","QUARTZ","DIAMOND"],O=["TRAINEE","JUNIOR","SENIOR","DIRECTOR"];function L(s){return s?new Date(s).toLocaleString("zh-TW",{hour12:!1}):"-"}function r({children:s}){return e.jsx("label",{className:"block text-[11px] font-bold uppercase tracking-wider text-gray-500",children:s})}function l(s){return e.jsx("input",{...s,className:E("mt-1 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-3 text-sm text-white outline-none transition focus:border-white/30",s.className)})}function _({defaultValue:s=10}){return e.jsxs("div",{children:[e.jsx(r,{children:"施工店抽成比例 (%)"}),e.jsxs("div",{className:"mt-1 grid grid-cols-[1fr_auto] overflow-hidden rounded-lg border border-white/10 bg-white/[0.04] focus-within:border-white/30",children:[e.jsx("input",{name:"serviceFeeRate",type:"number",inputMode:"numeric",defaultValue:s,min:"0",max:"100",step:"1",className:"min-w-0 bg-transparent px-3 py-3 text-sm text-white outline-none"}),e.jsx("span",{className:"flex min-h-11 items-center border-l border-white/10 px-3 text-sm font-black text-gray-300",children:"%"})]}),e.jsx("p",{className:"mt-1 text-[11px] leading-5 text-gray-500",children:"只適用授權施工店。填百分比,不是金額;例:10 代表總部記錄施工服務費 10% 抽成。企業通路不填這個欄位。"})]})}function c(s){return e.jsx("select",{...s,className:E("mt-1 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-3 text-sm text-white outline-none transition focus:border-white/30 [&>option]:text-black",s.className)})}function u({title:s,kicker:o,children:x}){return e.jsxs("section",{className:"rounded-lg border border-white/10 bg-white/[0.035] p-4 md:p-5",children:[e.jsx("div",{className:"mb-4 flex items-start justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-sky-300",children:o}),e.jsx("h2",{className:"mt-1 text-lg font-black text-white",children:s})]})}),x]})}function v({intent:s,children:o}){var g;const x=P(),N=(g=x.formData)==null?void 0:g.get("intent"),j=x.state==="submitting"&&N===s;return e.jsx("button",{type:"submit",disabled:j,className:"mt-4 min-h-11 w-full rounded-lg bg-white px-4 py-3 text-sm font-black text-black transition hover:bg-gray-200 disabled:opacity-50",children:j?"處理中...":o})}function y({member:s}){return e.jsxs("option",{value:s.id,children:[s.name," / ",s.phone," / ",s.role]})}function p({value:s}){const o=s==="ACTIVE"||s==="ADMIN"||s==="SALES"?"border-emerald-400/30 bg-emerald-400/10 text-emerald-200":s==="SUSPENDED"||s==="pending"?"border-amber-400/30 bg-amber-400/10 text-amber-200":"border-white/10 bg-white/5 text-gray-300";return e.jsx("span",{className:`rounded-md border px-2 py-1 text-[10px] font-black uppercase tracking-wider ${o}`,children:s})}function w({code:s,label:o,bindingUrl:x,expiresAt:N}){const[j,g]=f.useState(null);if(!s)return null;const h=async(n,m)=>{var k;await((k=navigator.clipboard)==null?void 0:k.writeText(n).catch(()=>null)),g(m),window.setTimeout(()=>g(null),1200)};return e.jsxs("div",{className:"rounded-lg border border-emerald-400/30 bg-emerald-400/10 p-4",children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-emerald-200",children:o||"LINE 綁定碼"}),e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-3",children:[e.jsx("div",{className:"font-mono text-3xl font-black tracking-[0.18em] text-white",children:s}),e.jsx("button",{type:"button",onClick:()=>h(s,"code"),className:"min-h-10 rounded-lg border border-white/15 px-3 text-xs font-bold text-white",children:j==="code"?"已複製":"複製碼"})]}),x?e.jsxs("div",{className:"mt-3 grid gap-2 rounded-lg border border-white/10 bg-black/20 p-3",children:[e.jsx("p",{className:"break-all text-xs leading-5 text-emerald-50/90",children:x}),e.jsx("button",{type:"button",onClick:()=>h(x,"url"),className:"min-h-10 rounded-lg bg-white px-3 text-xs font-black text-black",children:j==="url"?"已複製連結":"複製 LINE 連結"})]}):null,e.jsxs("p",{className:"mt-2 text-xs text-emerald-100/80",children:["到期:",L(N)]})]})}function $({data:s,onClose:o}){return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-4 backdrop-blur-sm",role:"dialog","aria-modal":"true","aria-labelledby":"direct-link-dialog-title",children:e.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-emerald-400/30 bg-[#07120f] p-5 shadow-2xl shadow-black/40",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] text-emerald-200",children:"Enterprise Direct Bind"}),e.jsx("h2",{id:"direct-link-dialog-title",className:"mt-1 text-xl font-black text-white",children:"LINE 直綁連結已建立"}),e.jsx("p",{className:"mt-2 text-sm leading-6 text-emerald-50/80",children:"把下方連結傳給企業通路負責人,例如原廠展售廳或二手車行;對方用 LINE 開啟後即可完成企業通路綁定。"})]}),e.jsx("button",{type:"button",onClick:o,className:"min-h-9 rounded-lg border border-white/10 px-3 text-xs font-black text-white hover:bg-white/10","aria-label":"關閉 LINE 直綁連結視窗",children:"X"})]}),e.jsx("div",{className:"mt-4",children:e.jsx(w,{code:s.bindingCode,label:s.bindingLabel,bindingUrl:s.bindingUrl,expiresAt:s.expiresAt})}),s.bindingUrl?e.jsx("a",{href:s.bindingUrl,target:"_blank",rel:"noreferrer",className:"mt-4 flex min-h-11 items-center justify-center rounded-lg bg-white px-4 text-sm font-black text-black hover:bg-gray-200",children:"開啟 LINE 綁定頁"}):null]})})}function Q({data:s}
1){return s?e.jsxs("section",{className:E("rounded-lg border p-4",s.ok?"border-emerald-400/30 bg-emerald-400/10 text-emerald-100":"border-red-400/30 bg-red-400/10 text-red-100"),"aria-live":"polite",children:[e.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-start md:justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.22em] opacity-80",children:"Enterprise Direct Bind"}),e.jsx("p",{className:"mt-1 text-base font-black",children:s.ok?"LINE 直綁連結已建立":"企業通路連結建立失敗"}),e.jsx("p",{className:"mt-1 text-sm leading-6 opacity-90",children:s.ok?"請複製下方 LINE 連結,傳給企業通路負責人完成綁定。":s.error})]}),s.ok&&s.bindingUrl?e.jsx("a",{href:s.bindingUrl,target:"_blank",rel:"noreferrer",className:"min-h-11 rounded-lg bg-white px-4 py-3 text-center text-sm font-black text-black hover:bg-gray-200",children:"開啟綁定頁"}):null]}),s.ok?e.jsx("div",{className:"mt-4",children:e.jsx(w,{code:s.bindingCode,label:s.bindingLabel,bindingUrl:s.bindingUrl,expiresAt:s.expiresAt})}):null]}):null}function Y(){const{members:s,agents:o,stores:x,enterpriseAccounts:N,qualityInspectors:j,activeCodes:g,stats:h}=U(),n=B(),[m,k]=f.useState("SALES"),[C,D]=f.useState(null),a=f.useMemo(()=>{const i=s.filter(t=>t.status==="ACTIVE");return{sales:i.filter(t=>t.role==="MEMBER"&&!t.agentProfile),stores:i.filter(t=>t.role==="MEMBER"&&!t.ownedStore),enterprises:i.filter(t=>t.role==="MEMBER"&&!t.ownedEnterprise),quality:i.filter(t=>(t.role==="MEMBER"||t.role==="ADMIN")&&!t.qualityInspectorProfile),role:i,activeStores:x.filter(t=>t.isActive),activeEnterprises:N.filter(t=>t.isActive),pendingStores:x.filter(t=>!t.isActive&&t.owner.status==="ACTIVE"),activeAgents:o.filter(t=>t.isActive&&t.member.status==="ACTIVE"),activeQuality:j.filter(t=>t.isActive&&t.member.status==="ACTIVE")}},[o,N,s,j,x]),q=f.useMemo(()=>m==="STORE"?a.activeStores.map(i=>({id:i.id,label:`${i.name} / ${i.code}`})):m==="ENTERPRISE"?a.activeEnterprises.map(i=>({id:i.id,label:`${i.name} / ${i.code}`})):m==="QUALITY_INSPECTOR"?a.activeQuality.map(i=>({id:i.id,label:`${i.name} / ${i.code}`})):a.activeAgents.map(i=>({id:i.id,label:`${i.name} / ${i.code}`})),[m,a.activeAgents,a.activeEnterprises,a.activeQuality,a.activeStores]),d=(n==null?void 0:n.intent)==="create-enterprise-direct-link"?n:null,M=!!(d!=null&&d.ok&&d.bindingCode&&C!==d.bindingCode);return e.jsxs("div",{className:"mx-auto max-w-7xl space-y-5 pb-10",children:[M?e.jsx($,{data:d,onClose:()=>D(d.bindingCode)}):null,e.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-end md:justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-black uppercase tracking-[0.28em] text-titanium-silver",children:"HQ Mobile Control"}),e.jsx("h1",{className:"mt-2 text-3xl font-black tracking-tight text-white",children:"身份管理"}),e.jsx("p",{className:"mt-2 max-w-2xl text-sm leading-6 text-gray-400",children:"建帳、升權、建立 B 端 profile,並產生對應 LINE 綁定碼。"})]}),e.jsx(V,{to:"/line/partner?entry=identities",className:"min-h-11 rounded-lg border border-white/10 px-4 py-3 text-center text-sm font-bold text-gray-200 hover:bg-white/5",children:"回 HQ LINE"})]}),e.jsx(Q,{data:d}),e.jsx("div",{className:"grid grid-cols-2 gap-2 md:grid-cols-4 xl:grid-cols-9",children:[["會員",h.members],["管理員",h.admins],["員工",h.staff],["業務",h.sales],["施工店",h.stores],["企業通路",h.enterprises],["待啟用施工店",h.pendingStores],["質檢師",h.quality],["有效碼",h.activeCodes]].map(([i,t])=>e.jsxs("div",{className:"rounded-lg border border-white/10 bg-white/[0.035] px-3 py-3",children:[e.jsx("div",{className:"text-[10px] font-bold text-gray-500",children:i}),e.jsx("div",{className:"mt-1 font-mono text-xl font-black text-white",children:t})]},i))}),n&&n.intent!=="create-enterprise-direct-link"?e.jsxs("div",{className:E("rounded-lg border p-4",n.ok?"border-emerald-400/30 bg-emerald-400/10 text-emerald-100":"border-red-400/30 bg-red-400/10 text-red-100"),children:[e.jsx("p",{className:"text-sm font-bold",children:n.ok?n.message:n.error}),n.warning?e.jsx("p",{className:"mt-2 text-xs text-amber-100",children:n.warning}):null,e.jsx("div",{className:"mt-3",children:e.jsx(w,{code:n.bindingCode,label:n.bindingLabel,bindingUrl:n.bindingUrl,expiresAt:n.expiresAt})})]}):null,e.jsxs("div",{className:"grid gap-4 xl:grid-cols-[1.1fr_0.9fr]",children:[e.jsx(u,{title:"建立網站帳號",kicker:"Account",children:e.jsxs(b,{method:"post",className:"grid gap-3 md:grid-cols-2",children:[e.jsx("input",{type:"hidden",name:"intent",value:"create-member"}),e.jsxs("div",{children:[e.jsx(r,{children:"姓名"}),e.jsx(l,{name:"name",required:!0,placeholder:"王小明",autoComplete:"name"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"手機"}),e.jsx(l,{name:"phone",required:!0,placeholder:"0912345678",autoComplete:"tel"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"Email"}),e.jsx(l,{name:"email",type:"email",required:!0,placeholder:"[email protected]",autoComplete:"email"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"角色"}),e.jsxs(c,{name:"role",defaultValue:"MEMBER",children:[e.jsx("option",{value:"MEMBER",children:"會員"}),e.jsx("option",{value:"STAFF",children:"員工"}),e.jsx("option",{value:"ADMIN",children:"管理員"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"等級"}),e.jsx(c,{name:"tier",defaultValue:"GUEST",children:T.map(i=>e.jsx("option",{value:i,children:i},i))})]})]}),e.jsx("div",{className:"md:col-span-2",children:e.jsx(v,{intent:"create-member",children:"建立帳號"})})]})}
1),e.jsx(u,{title:"角色與狀態",kicker:"Role",children:e.jsxs(b,{method:"post",className:"space-y-3",children:[e.jsx("input",{type:"hidden",name:"intent",value:"update-member-role"}),e.jsxs("div",{children:[e.jsx(r,{children:"帳號"}),e.jsxs(c,{name:"memberId",required:!0,children:[e.jsx("option",{value:"",children:"選擇帳號"}),a.role.map(i=>e.jsx(y,{member:i},i.id))]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"角色"}),e.jsxs(c,{name:"role",defaultValue:"ADMIN",children:[e.jsx("option",{value:"MEMBER",children:"會員"}),e.jsx("option",{value:"STAFF",children:"員工"}),e.jsx("option",{value:"ADMIN",children:"管理員"}),e.jsx("option",{value:"SALES",children:"業務"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"狀態"}),e.jsxs(c,{name:"status",defaultValue:"ACTIVE",children:[e.jsx("option",{value:"ACTIVE",children:"啟用"}),e.jsx("option",{value:"SUSPENDED",children:"停權"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"等級"}),e.jsx(c,{name:"tier",defaultValue:"DIAMOND",children:T.map(i=>e.jsx("option",{value:i,children:i},i))})]})]}),e.jsx(v,{intent:"update-member-role",children:"更新身份"})]})})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-3",children:[e.jsx(u,{title:"轉為業務",kicker:"Sales",children:e.jsxs(b,{method:"post",className:"space-y-3",children:[e.jsx("input",{type:"hidden",name:"intent",value:"create-sales"}),e.jsx("input",{type:"hidden",name:"expiresInHours",value:"72"}),e.jsxs("div",{children:[e.jsx(r,{children:"會員"}),e.jsxs(c,{name:"memberId",required:!0,children:[e.jsx("option",{value:"",children:"選擇一般會員"}),a.sales.map(i=>e.jsx(y,{member:i},i.id))]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"顯示名稱"}),e.jsx(l,{name:"name",required:!0,placeholder:"業務姓名"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"業務代碼"}),e.jsx(l,{name:"code",required:!0,placeholder:"Z-A01"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"職級"}),e.jsx(c,{name:"rank",defaultValue:"TRAINEE",children:O.map(i=>e.jsx("option",{value:i,children:i},i))})]}),e.jsxs("div",{children:[e.jsx(r,{children:"上線"}),e.jsxs(c,{name:"parentId",defaultValue:"",children:[e.jsx("option",{value:"",children:"無"}),a.activeAgents.map(i=>e.jsxs("option",{value:i.id,children:[i.name," / ",i.code]},i.id))]})]})]}),e.jsx(v,{intent:"create-sales",children:"建立業務並產碼"})]})}),e.jsxs(u,{title:"建立施工店",kicker:"Store",children:[e.jsxs(b,{method:"post",className:"space-y-3",children:[e.jsx("input",{type:"hidden",name:"intent",value:"create-store"}),e.jsxs("div",{children:[e.jsx(r,{children:"負責人"}),e.jsxs(c,{name:"ownerMemberId",required:!0,children:[e.jsx("option",{value:"",children:"選擇一般會員"}),a.stores.map(i=>e.jsx(y,{member:i},i.id))]})]}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(r,{children:"施工店名"}),e.jsx(l,{name:"name",required:!0,placeholder:"台北旗艦施工店"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"店碼"}),e.jsx(l,{name:"code",required:!0,placeholder:"TPE001"})]})]}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(r,{children:"電話"}),e.jsx(l,{name:"phone",required:!0,placeholder:"02..."})]}),e.jsx(_,{})]}),e.jsxs("div",{children:[e.jsx(r,{children:"地址"}),e.jsx(l,{name:"address",required:!0,placeholder:"縣市 / 路段 / 門牌"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"開發業務"}),e.jsxs(c,{name:"recruitedById",defaultValue:"",children:[e.jsx("option",{value:"",children:"公司直營"}),a.activeAgents.map(i=>e.jsxs("option",{value:i.id,children:[i.name," / ",i.code]},i.id))]})]}),e.jsx(v,{intent:"create-store",children:"建立待啟用施工店"})]}),a.pendingStores.length>0?e.jsxs("div",{className:"mt-4 border-t border-white/10 pt-4",children:[e.jsx(r,{children:"待啟用施工店"}),e.jsx("div",{className:"mt-2 grid gap-2",children:a.pendingStores.slice(0,5).map(i=>e.jsxs(b,{method:"post",className:"grid grid-cols-[1fr_auto] items-center gap-2 rounded-lg border border-amber-400/20 bg-amber-400/10 p-2",children:[e.jsx("input",{type:"hidden",name:"intent",value:"activate-store"}),e.jsx("input",{type:"hidden",name:"storeId",value:i.id}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"truncate text-sm font-bold text-white",children:i.name}),e.jsxs("div",{className:"truncate text-xs text-amber-100/80",children:[i.code," / ",i.owner.name]})]}),e.jsx("button",{type:"submit",className:"min-h-10 rounded-lg bg-white px-3 text-xs font-black text-black",children:"啟用"})]},i.id))})]}):null]}),e.jsx(u,{title:"建立企業通路",kicker:"Enterprise",children:e.jsxs(b,{method:"post",className:"space-y-3",children:[e.jsx("input",{type:"hidden",name:"intent",value:"create-enterprise-direct-link"}),e.jsx("input",{type:"hidden",name:"expiresInHours",value:"72"}),e.jsx("p",{className:"rounded-lg border border-sky-300/20 bg-sky-300/10 px-3 py-2 text-xs leading-5 text-sky-100",children:"企業通路是原廠展售廳、二手車行、車商集團;不是施工包膜店,不需要填施工費率。建立成功後會在頁面上方跳出 LINE 直綁連結。"}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(r,{children:"負責人姓名"}),e.jsx(l,{name:"ownerName",required:!0,placeholder:"王小明",autoComplete:"name"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"負責人手機"}),e.jsx(l,{name:"ownerPhone",required:!0,placeholder:"0912345678",autoComplete:"tel"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"負責人 Email"}),e.jsx(l,{name:"ownerEmail",type:"email",required:!0,placeholder:"[email protected]",autoComplete:"email"})]}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(r,{children:"企業名稱"}),e.jsx(l,{name:"name",required:!0,placeholder:"賓士台北原廠展售廳"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"企業代碼"}),e.jsx(l,{name:"code",required:!0,placeholder:"MB-TPE01"})]})]}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(r,{children:"企業類型"}),e.jsxs(c,{name:"enterpriseAccountType",defaultValue:"ORIGINAL_DEALER",children:[e.jsx("option",{value:"ORIGINAL_DEALER",children:"原廠展售廳 / 經銷商"}),e.jsx("option",{value:"USED_CAR_DEALER",children:"二手車行"}),e.jsx("option",{value:"DEALER_GROUP",children:"車商集團"}),e.jsx("option",{value:"OTHER",children:"其他企業通路"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"企業電話"}),e.jsx(l,{name:"phone",required:!0,placeholder:"02..."})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"企業地址"}),e.jsx(l,{name:"address",placeholder:"縣市 / 路段 / 門牌"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"開發業務"}),e.jsxs(c,{name:"recruitedById",defaultValue:"",children:[e.jsx("option",{value:"",children:"公司直營"}),a.activeAgents.map(i=>e.jsxs("option",{value:i.id,children:[i.name," / ",i.code]},i.id))]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"備註"}
1),e.jsx(l,{name:"note",placeholder:"例如:展示車合作、二手車交車前包膜導流"})]}),e.jsx(v,{intent:"create-enterprise-direct-link",children:"建立企業並產 LINE 連結"}),d?e.jsxs("div",{className:E("mt-4 rounded-lg border p-4",d.ok?"border-emerald-400/30 bg-emerald-400/10 text-emerald-100":"border-red-400/30 bg-red-400/10 text-red-100"),children:[e.jsx("p",{className:"text-sm font-bold",children:d.ok?d.message:d.error}),d.ok?e.jsx("div",{className:"mt-3",children:e.jsx(w,{code:d.bindingCode,label:d.bindingLabel,bindingUrl:d.bindingUrl,expiresAt:d.expiresAt})}):null]}):null]})}),e.jsx(u,{title:"建立質檢師",kicker:"Quality",children:e.jsxs(b,{method:"post",className:"space-y-3",children:[e.jsx("input",{type:"hidden",name:"intent",value:"create-quality"}),e.jsx("input",{type:"hidden",name:"expiresInHours",value:"72"}),e.jsxs("div",{children:[e.jsx(r,{children:"帳號"}),e.jsxs(c,{name:"memberId",required:!0,children:[e.jsx("option",{value:"",children:"選擇一般會員 / 管理員"}),a.quality.map(i=>e.jsx(y,{member:i},i.id))]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"姓名"}),e.jsx(l,{name:"name",required:!0,placeholder:"質檢姓名"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"代碼"}),e.jsx(l,{name:"code",required:!0,placeholder:"QC001"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"區域"}),e.jsx(l,{name:"region",placeholder:"北區"})]}),e.jsxs("div",{children:[e.jsx(r,{children:"電話"}),e.jsx(l,{name:"phone",placeholder:"選填"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"Email"}),e.jsx(l,{name:"email",type:"email",placeholder:"選填"})]}),e.jsx(v,{intent:"create-quality",children:"建立質檢並產碼"})]})})]}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[0.9fr_1.1fr]",children:[e.jsx(u,{title:"產生 LINE 綁定碼",kicker:"Binding",children:e.jsxs(b,{method:"post",className:"space-y-3",children:[e.jsx("input",{type:"hidden",name:"intent",value:"generate-binding-code"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx(r,{children:"類型"}),e.jsxs(c,{name:"targetType",value:m,onChange:i=>k(i.currentTarget.value),children:[e.jsx("option",{value:"SALES",children:"業務 PARTNER"}),e.jsx("option",{value:"STORE",children:"施工店 PARTNER"}),e.jsx("option",{value:"ENTERPRISE",children:"企業通路 PARTNER"}),e.jsx("option",{value:"QUALITY_INSPECTOR",children:"質檢攝影"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:"有效小時"}),e.jsx(l,{name:"expiresInHours",type:"number",min:"1",max:"336",defaultValue:"72"})]})]}),e.jsxs("div",{children:[e.jsx(r,{children:m==="SALES"?"業務":m==="STORE"?"啟用施工店":m==="ENTERPRISE"?"啟用企業通路":"質檢師"}),e.jsxs(c,{name:"targetId",required:!0,children:[e.jsx("option",{value:"",children:"選擇目標"}),q.map(i=>e.jsx("option",{value:i.id,children:i.label},i.id))]})]}),e.jsx(v,{intent:"generate-binding-code",children:"產生綁定碼"})]})}),e.jsx(u,{title:"有效綁定碼",kicker:"Live Codes",children:e.jsx("div",{className:"grid gap-2",children:g.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-white/10 py-8 text-center text-sm text-gray-500",children:"目前沒有有效綁定碼。"}):g.map(i=>{var t,I,A,S,R;return e.jsxs("div",{className:"grid gap-2 rounded-lg border border-white/10 bg-black/20 p-3 md:grid-cols-[1fr_auto] md:items-center",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-mono text-lg font-black tracking-[0.18em] text-white",children:i.code}),e.jsx(p,{value:i.accountType}),i.partnerRole?e.jsx(p,{value:i.partnerRole}):null]}),e.jsx("p",{className:"mt-1 truncate text-xs text-gray-400",children:((t=i.salesAgent)==null?void 0:t.name)||((I=i.store)==null?void 0:I.name)||((A=i.enterpriseAccount)==null?void 0:A.name)||((S=i.qualityInspector)==null?void 0:S.name)||((R=i.member)==null?void 0:R.name)||"未指定"}),i.bindingUrl?e.jsx("a",{href:i.bindingUrl,className:"mt-2 block truncate text-xs font-bold text-sky-200 hover:text-white",children:i.bindingUrl}):null]}),e.jsxs("div",{className:"text-xs text-gray-500",children:["到期 ",L(i.expiresAt)]})]},i.id)})})})]}),e.jsx(u,{title:"近期身份",kicker:"Roster",children:e.jsx("div",{className:"grid gap-2 md:grid-cols-2 xl:grid-cols-3",children:s.slice(0,30).map(i=>e.jsxs("div",{className:"rounded-lg border border-white/10 bg-black/20 p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-black text-white",children:i.name}),e.jsxs("p",{className:"truncate text-xs text-gray-500",children:[i.phone," / ",i.email]})]}),e.jsx(p,{value:i.role})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsx(p,{value:i.status}),i.lineId?e.jsx(p,{value:"LINE"}):null,i.agentProfile?e.jsx(p,{value:`SALES ${i.agentProfile.code}`}):null,i.ownedStore?e.jsx(p,{value:`STORE ${i.ownedStore.code}`}):null,i.ownedEnterprise?e.jsx(p,{value:`ENT ${i.ownedEnterprise.code}`}):null,i.qualityInspectorProfile?e.jsx(p,{value:`QC ${i.qualityInspectorProfile.code}`}):null]})]},i.id))})})]})}export{Y 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.