1import{d as T,v as j,f as c,z as p,L as e,H as s,R as i,S as k,y as g,F as O,A as z,a5 as B,q as I,G as C,a9 as _,r as d}from"./vendor-vue-DGd8mKWO.js";const L={class:"space-y-6"},M={class:"flex items-center justify-between"},P={class:"flex items-center gap-3"},R={class:"text-xl font-semibold"},G={class:"flex gap-2"},J={value:"all"},q={value:"active"},H={value:"inactive"},K={class:"border rounded overflow-hidden"},Q={class:"w-full text-sm"},W={class:"bg-gray-50"},X={class:"px-4 py-2 text-left"},Y={class:"px-4 py-2 text-left"},Z={class:"px-4 py-2 text-left"},ee={class:"px-4 py-2 text-left"},te={class:"px-4 py-2 text-left"},se={class:"px-4 py-2 text-left"},oe={class:"px-4 py-2 text-center"},ae={key:0},le={colspan:"7",class:"px-4 py-8 text-center text-gray-500"},ne={key:1},de={colspan:"7",class:"px-4 py-8 text-center text-gray-500"},ie={class:"px-4 py-2 font-mono text-xs"},re={class:"px-4 py-2"},ue={class:"px-4 py-2 text-gray-600"},ce={class:"px-4 py-2"},pe={class:"px-4 py-2"},me={class:"px-4 py-2 text-center"},ve={class:"px-4 py-2"},_e={class:"flex gap-2 justify-center"},xe=["onClick"],be=["onClick"],ye={key:0,class:"flex items-center justify-between text-sm"},he={class:"flex gap-2"},fe=["disabled"],ge={class:"px-3 py-1"},we=["disabled"],ke={class:"bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] overflow-y-auto"},Ce={class:"p-6"},De={class:"text-lg font-semibold mb-4"},Ne={class:"space-y-4"},Se={class:"block text-sm font-medium mb-1"},Fe=["placeholder"],$e={class:"block text-sm font-medium mb-1"},Ee=["placeholder"],Ue={class:"block text-sm font-medium mb-1"},Ve={class:"block text-sm font-medium mb-1"},Ae={class:"block text-sm font-medium mb-1"},Te={class:"grid grid-cols-2 gap-4"},je={class:"block text-sm font-medium mb-1"},Oe={value:"active"},ze={value:"inactive"},Be={class:"block text-sm font-medium mb-1"},Ie={class:"flex justify-end gap-3 mt-6"},Me=T({__name:"ResourceOpsBusinessDomainsPage",props:{locale:{}}
1,emits:["back","selectAppSystem"],setup(D,{emit:N}){const S=D,F=N,y=d([]),h=d(!1),x=d(0),m=d(1),f=d(20),b=d("all"),r=d(!1),v=d(null),n=d({domain_code:"",domain_name:"",domain_name_en:"",description:"",owner:"",status:"active",sort_order:0}),o=(l,t)=>S.locale==="zh"?l:t;async function u(){h.value=!0;try{const l=new URLSearchParams({page:m.value.toString(),page_size:f.value.toString()});b.value!=="all"&&l.set("status",b.value);const t=await apiFetch(`/api/resource-ops/cmdb/business-domains?${l}`,{method:"GET"});y.value=t.items||[],x.value=t.total||0}catch(l){console.error("Failed to load business domains:",l)}finally{h.value=!1}}async function $(){try{await apiFetch("/api/resource-ops/cmdb/business-domains",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n.value)}),r.value=!1,w(),await u()}catch(l){alert(l.message||"Failed to create business domain")}}async function E(l){v.value=l,n.value={domain_code:l.domain_code,domain_name:l.domain_name,domain_name_en:l.domain_name_en||"",description:l.description||"",owner:l.owner||"",status:l.status,sort_order:l.sort_order},r.value=!0}async function U(){if(v.value)try{await apiFetch(`/api/resource-ops/cmdb/business-domains/${v.value.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(n.value)}),r.value=!1,w(),await u()}catch(l){alert(l.message||"Failed to update business domain")}}async function V(l){if(confirm(`Delete business domain "${l.domain_name}"?`))try{await apiFetch(`/api/resource-ops/cmdb/business-domains/${l.id}`,{method:"DELETE"}),await u()}catch(t){alert(t.message||"Failed to delete business domain")}}function w(){v.value=null,n.value={domain_code:"",domain_name:"",domain_name_en:"",description:"",owner:"",status:"active",sort_order:0}}return j(()=>{u()}),(l,t)=>(c(),p("div",L,[e("div",M,[e("div",P,[e("button",{onClick:t[0]||(t[0]=a=>F("back")),class:"px-3 py-1.5 text-sm rounded border hover:bg-gray-50"}," â "+s(o("è¿å","Back")),1),e("h2",R,s(o("ä¸å¡é¢å管ç","Business Domains")),1)]),e("button",{onClick:t[1]||(t[1]=a=>r.value=!0),class:"px-4 py-2 text-sm bg-blue-600 text-white rounded hover:bg-blue-700"}," + "+s(o("æ°å»ºä¸å¡é¢å","New Domain")),1)]),e("div",G,[i(e("select",{"onUpdate:modelValue":t[2]||(t[2]=a=>b.value=a),onChange:u,class:"px-3 py-1.5 text-sm border rounded"},[e("option",J,s(o("å
¨é¨ç¶æ","All Status")),1),e("option",q,s(o("å¯ç¨","Active")),1),e("option",H,s(o("åç¨","Inactive")),1)],544),[[k,b.value]])]),e("div",K,[e("table",Q,[e("thead",W,[e("tr",null,[e("th",X,s(o("ç¼ç ","Code")),1),e("th",Y,s(o("åç§°","Name")),1),e("th",Z,s(o("è±æåç§°","English Name")),1),e("th",ee,s(o("è´è´£äºº","Owner")),1),e("th",te,s(o("ç¶æ","Status")),1),e("th",se,s(o("æåº","Sort")),1),e("th",oe,s(o("æä½","Actions")),1)])]),e("tbody",null,[h.value?(c(),p("tr",ae,[e("td",le,s(o("å è½½ä¸...","Loading...")),1)])):y.value.length===0?(c(),p("tr",ne,[e("td",de,s(o("ææ æ°æ®","No data")),1)])):g("",!0),(c(!0),p(O,null,z(y.value,a=>(c(),p("tr",{key:a.id,class:"border-t hover:bg-gray-50"},[e("td",ie,s(a.domain_code),1),e("td",re,s(a.domain_name),1),e("td",ue,s(a.domain_name_en||"-"),1),e("td",ce,s(a.owner||"-"),1),e("td",pe,[e("span",{class:B(["px-2 py-0.5 text-xs rounded",a.status==="active"?"bg-green-100 text-green-800":"bg-gray-100 text-gray-600"])},s(a.status==="active"?o("å¯ç¨","Active"):o("åç¨","Inactive")),3)]),e("td",me,s(a.sort_order),1),e("td",ve,[e("div",_e,[e("button",{onClick:A=>E(a),class:"px-2 py-1 text-xs text-blue-600 hover:bg-blue-50 rounded"},s(o("ç¼è¾","Edit")),9,xe),e("button",{onClick:A=>V(a),class:"px-2 py-1 text-xs text-red-600 hover:bg-red-50 rounded"},s(o("å é¤","Delete")),9,be)])])]))),128))])])]),x.value>f.value?(c(),p("div",ye,[e("span",null,s(o("å
±","Total"))+" "+s(x.value)+" "+s(o("æ¡","items")),1),e("div",he,[e("button",{disabled:m.value<=1,onClick:t[3]||(t[3]=a=>{m.value--,u()}),class:"px-3 py-1 border rounded disabled:opacity-50"},s(o("ä¸ä¸é¡µ","Previous")),9,fe),e("span",ge,s(m.value),1),e("button",{disabled:m.value>=Math.ceil(x.value/f.value),onClick:t[4]||(t[4]=a=>{m.value++,u()}),class:"px-3 py-1 border rounded disabled:opacity-50"},s(o("ä¸ä¸é¡µ","Next")),9,we)])])):g("",!0),r.value?(c(),p("div",{key:1,class:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",onClick:t[14]||(t[14]=I(a=>r.value=!1,["self"]))},[e("div",ke,[e("div",Ce,[e("h3",De,s(v.value?o("ç¼è¾ä¸å¡é¢å","Edit Domain"):o("æ°å»ºä¸å¡é¢å","New Domain")),1
1),e("div",Ne,[e("div",null,[e("label",Se,[C(s(o("ä¸å¡é¢åç¼ç ","Domain Code"))+" ",1),t[15]||(t[15]=e("span",{class:"text-red-500"},"*",-1))]),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=a=>n.value.domain_code=a),type:"text",class:"w-full px-3 py-2 border rounded",placeholder:o("å¦: FINANCE","e.g. FINANCE")},null,8,Fe),[[_,n.value.domain_code]])]),e("div",null,[e("label",$e,[C(s(o("ä¸å¡é¢ååç§°","Domain Name"))+" ",1),t[16]||(t[16]=e("span",{class:"text-red-500"},"*",-1))]),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=a=>n.value.domain_name=a),type:"text",class:"w-full px-3 py-2 border rounded",placeholder:o("å¦: è´¢å¡å","e.g. Finance")},null,8,Ee),[[_,n.value.domain_name]])]),e("div",null,[e("label",Ue,s(o("è±æåç§°","English Name")),1),i(e("input",{"onUpdate:modelValue":t[7]||(t[7]=a=>n.value.domain_name_en=a),type:"text",class:"w-full px-3 py-2 border rounded"},null,512),[[_,n.value.domain_name_en]])]),e("div",null,[e("label",Ve,s(o("æè¿°","Description")),1),i(e("textarea",{"onUpdate:modelValue":t[8]||(t[8]=a=>n.value.description=a),rows:"3",class:"w-full px-3 py-2 border rounded"},null,512),[[_,n.value.description]])]),e("div",null,[e("label",Ae,s(o("è´è´£äºº","Owner")),1),i(e("input",{"onUpdate:modelValue":t[9]||(t[9]=a=>n.value.owner=a),type:"text",class:"w-full px-3 py-2 border rounded"},null,512),[[_,n.value.owner]])]),e("div",Te,[e("div",null,[e("label",je,s(o("ç¶æ","Status")),1),i(e("select",{"onUpdate:modelValue":t[10]||(t[10]=a=>n.value.status=a),class:"w-full px-3 py-2 border rounded"},[e("option",Oe,s(o("å¯ç¨","Active")),1),e("option",ze,s(o("åç¨","Inactive")),1)],512),[[k,n.value.status]])]),e("div",null,[e("label",Be,s(o("æåº","Sort Order")),1),i(e("input",{"onUpdate:modelValue":t[11]||(t[11]=a=>n.value.sort_order=a),type:"number",class:"w-full px-3 py-2 border rounded"},null,512),[[_,n.value.sort_order,void 0,{number:!0}]])])])]),e("div",Ie,[e("button",{onClick:t[12]||(t[12]=a=>r.value=!1),class:"px-4 py-2 border rounded hover:bg-gray-50"},s(o("åæ¶","Cancel")),1),e("button",{onClick:t[13]||(t[13]=a=>v.value?U():$()),class:"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"},s(o("ä¿å","Save")),1)])])])])):g("",!0)]))}});export{Me 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.