import{$ as e,H as t,L as n,P as ee,V as r,Vt as i,Wt as a,_ as o,d as s,et as c,f as l,i as te,lt as u,p as d,st as f,u as p,v as m,z as ne}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{l as re,o as h,s as g,t as _,u as ie}from"./index-DK5nh4op.js";import"./request-BcX6wdRT.js";import{dictApi as v}from"./system-cE3W4r-W.js";var ae={class:`p-6 space-y-4`},oe={class:`flex gap-4`,style:{"min-height":`0`}},se={class:`bg-white rounded-2xl border border-gray-100 shadow-sm flex flex-col gap-3 p-4`,style:{width:`280px`,"flex-shrink":`0`,height:`fit-content`,"max-height":`calc(100vh - 140px)`,overflow:`hidden`}},ce={class:`flex items-center justify-between`},le={class:`flex-1 overflow-y-auto`,style:{"min-height":`100px`}},ue=[`onClick`],de={class:`flex-1 min-w-0`},fe={class:`text-[11px] text-gray-400 mt-0.5`},pe={class:`bg-white rounded-2xl border border-gray-100 shadow-sm flex-1 min-w-0`},me={class:`flex items-center justify-between px-5 py-4 border-b border-gray-50`},he={class:`text-[15px] font-semibold text-gray-800`},ge={class:`px-2`},_e={key:1},ve={key:1,class:`px-5 py-3 border-t border-gray-50`},ye={style:{display:`flex`,"align-items":`center`,gap:`10px`}},y=_({__name:`index`,setup(_){let y=u([]),b=u(0),x=u(!1),S=u(null),C=f({keyword:``}),w=f({page:1,page_size:20}),T=u(!1),E=u(`新增字典类型`),D=u(!1),O=u(!1),k=u(null),A=f({id:null,name:``,code:``,description:``,status:1}),be={name:[{required:!0,message:`请输入类型名称`,trigger:`blur`}],code:[{required:!0,message:`请输入类型编码`,trigger:`blur`},{pattern:/^[a-zA-Z][a-zA-Z0-9_]*$/,message:`编码以字母开头,只允许字母、数字、下划线`,trigger:`blur`}]},j=u([]),M=u(0),N=u(!1),P=f({page:1,page_size:20}),F=u(!1),I=u(`新增字典项`),L=u(!1),R=u(!1),z=u(null),B=f({id:null,label:``,value:``,sort:0,color:``,description:``,status:1}),xe={label:[{required:!0,message:`请输入字典标签`,trigger:`blur`}],value:[{required:!0,message:`请输入字典值`,trigger:`blur`}]};async function V(){x.value=!0;try{let e=await v.getTypeList({keyword:C.keyword,...w});y.value=e.data?.list||[],b.value=e.data?.total||0,!S.value&&y.value.length>0&&H(y.value[0])}catch{}finally{x.value=!1}}function H(e){S.value=e,P.page=1,W()}function U(){w.page=1,V()}function Se(){O.value=!1,E.value=`新增字典类型`,Object.assign(A,{id:null,name:``,code:``,description:``,status:1}),T.value=!0}async function Ce(e){O.value=!0,E.value=`编辑字典类型 - ${e.name}`,Object.assign(A,{id:e.id,name:e.name,code:e.code,description:e.description||``,status:e.status}),T.value=!0}async function we(){k.value&&await k.value.validate(async e=>{if(e){D.value=!0;try{O.value?(await v.deleteType(A.id),await v.createType({name:A.name,code:A.code,description:A.description,status:A.status}),g.success(`字典类型更新成功`),S.value?.id===A.id&&(S.value.name=A.name)):(await v.createType(A),g.success(`字典类型创建成功`)),T.value=!1,V()}catch{}finally{D.value=!1}}})}async function Te(e){await h.confirm(`确定删除字典类型「${e.name}」吗?该类型下的所有字典项将一并删除。`,`删除确认`,{confirmButtonText:`确定删除`,cancelButtonText:`取消`,type:`warning`,confirmButtonClass:`el-button--danger`}),await v.deleteType(e.id),g.success(`删除成功`),S.value?.id===e.id&&(S.value=null,j.value=[]),V()}async function W(){if(S.value){N.value=!0;try{let e=await v.getItemList(S.value.id,P);j.value=e.data?.list||[],M.value=e.data?.total||0}catch{}finally{N.value=!1}}}function Ee(){if(!S.value){g.warning(`请先选择左侧字典类型`);return}R.value=!1,I.value=`在「${S.value.name}」下新增字典项`,Object.assign(B,{id:null,label:``,value:``,sort:0,color:``,description:``,status:1}),F.value=!0}async function De(e){R.value=!0,I.value=`编辑字典项 - ${e.label}`,Object.assign(B,{id:e.id,label:e.label,value:e.value,sort:e.sort||0,color:e.color||``,description:e.description||``,status:e.status}),F.value=!0}async function Oe(){z.value&&await z.value.validate(async e=>{if(e){L.value=!0;try{R.value?(await v.updateItem(B.id,B),g.success(`字典项更新成功`)):(await v.createItem(S.value.id,B),g.success(`字典项创建成功`)),F.value=!1,W()}catch{}finally{L.value=!1}}})}async function ke(e){await h.confirm(`确定删除字典项「${e.label}」吗?`,`删除确认`,{confirmButtonText:`确定删除`,cancelButtonText:`取消`,type:`warning`,confirmButtonClass:`el-button--danger`}),await v.deleteItem(e.id),g.success(`删除成功`),W()}function Ae(e){P.page=e,W()}return ee(V),(ee,u)=>{let f=r(`el-button`),h=r(`Search`),g=r(`el-icon`),_=r(`el-input`),v=r(`Edit`),W=r(`Delete`),G=r(`el-empty`),K=r(`el-pagination`),q=r(`el-tag`),J=r(`el-table-column`),je=r(`el-table`),Y=r(`el-form-item`),X=r(`el-radio`),Z=r(`el-radio-group`),Q=r(`el-form`),Me=r(`el-dialog`),Ne=r(`el-color-picker`),Pe=r(`el-input-number`),$=t(`loading`);return n(),d(`div`,ae,[p(`div`,oe,[p(`div`,se,[p(`div`,ce,[u[18]||=p(`span`,{class:`text-[15px] font-semibold text-gray-800`},`字典类型`,-1),m(f,{size:`small`,type:`primary`,icon:`Plus`,onClick:Se})]),p(`div`,null,[m(_,{modelValue:C.keyword,"onUpdate:modelValue":u[0]||=e=>C.keyword=e,placeholder:`搜索类型`,size:`small`,clearable:``,onKeydown:re(U,[`enter`]),onClear:U},{prefix:e(()=>[m(g,null,{default:e(()=>[m(h)]),_:1})]),_:1},8,[`modelValue`])]),c((n(),d(`div`,le,[(n(!0),d(te,null,ne(y.value,t=>(n(),d(`div`,{key:t.id,class:i([`flex items-center justify-between px-3 py-2.5 rounded-md cursor-pointer transition-colors duration-150 hover:bg-blue-50 group`,{"bg-blue-50":S.value?.id===t.id}]),onClick:e=>H(t)},[p(`div`,de,[p(`div`,{class:i([`text-sm truncate`,S.value?.id===t.id?`text-blue-700 font-semibold`:`text-gray-800`])},a(t.name),3),p(`div`,fe,a(t.code),1)]),p(`div`,{class:`flex gap-1.5 opacity-0 group-hover:opacity-100 transition-opacity duration-150`,onClick:u[1]||=ie(()=>{},[`stop`])},[m(g,{class:`cursor-pointer text-gray-400 hover:text-blue-500 text-[14px]`,onClick:e=>Ce(t)},{default:e(()=>[m(v)]),_:1},8,[`onClick`]),m(g,{class:`cursor-pointer text-gray-400 hover:text-red-500 text-[14px]`,onClick:e=>Te(t)},{default:e(()=>[m(W)]),_:1},8,[`onClick`])])],10,ue))),128)),!x.value&&y.value.length===0?(n(),s(G,{key:0,description:`暂无字典类型`,"image-size":60})):l(``,!0)])),[[$,x.value]]),b.value>w.page_size?(n(),s(K,{key:0,"current-page":w.page,"onUpdate:currentPage":u[2]||=e=>w.page=e,"page-size":w.page_size,total:b.value,layout:`prev, pager, next`,small:``,onCurrentChange:V},null,8,[`current-page`,`page-size`,`total`])):l(``,!0)]),p(`div`,pe,[p(`div`,me,[p(`span`,he,a(S.value?`字典项 — ${S.value.name}(${S.value.code})`:`字典项`),1),m(f,{size:`small`,type:`primary`,icon:`Plus`,disabled:!S.value,onClick:Ee},{default:e(()=>[...u[19]||=[o(` 新增字典项 `,-1)]]),_:1},8,[`disabled`])]),p(`div`,ge,[c((n(),s(je,{data:j.value,style:{width:`100%`}},{default:e(()=>[m(J,{prop:`label`,label:`字典标签`,"min-width":`140`},{default:e(({row:t})=>[t.color?(n(),s(q,{key:0,color:t.color,style:{color:`#fff`,"border-color":`transparent`},size:`small`},{default:e(()=>[o(a(t.label),1)]),_:2},1032,[`color`])):(n(),d(`span`,_e,a(t.label),1))]),_:1}),m(J,{prop:`value`,label:`字典值`,"min-width":`120`}),m(J,{prop:`sort`,label:`排序`,width:`70`,align:`center`}),m(J,{label:`状态`,width:`80`,align:`center`},{default:e(({row:t})=>[m(q,{type:t.status===1?`success`:`danger`,size:`small`},{default:e(()=>[o(a(t.status===1?`启用`:`禁用`),1)]),_:2},1032,[`type`])]),_:1}),m(J,{prop:`description`,label:`备注`,"min-width":`160`,"show-overflow-tooltip":``}),m(J,{label:`操作`,width:`120`,fixed:`right`,align:`center`},{default:e(({row:t})=>[m(f,{size:`small`,type:`primary`,text:``,onClick:e=>De(t)},{default:e(()=>[...u[20]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),m(f,{size:`small`,type:`danger`,text:``,onClick:e=>ke(t)},{default:e(()=>[...u[21]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[$,N.value]])]),!N.value&&!S.value?(n(),s(G,{key:0,description:`请在左侧选择字典类型`,style:{"margin-top":`40px`}})):l(``,!0),M.value>0?(n(),d(`div`,ve,[m(K,{"current-page":P.page,"onUpdate:currentPage":u[3]||=e=>P.page=e,"page-size":P.page_size,total:M.value,layout:`total, prev, pager, next`,background:``,onCurrentChange:Ae},null,8,[`current-page`,`page-size`,`total`])])):l(``,!0)])]),m(Me,{modelValue:T.value,"onUpdate:modelValue":u[9]||=e=>T.value=e,title:E.value,width:`460px`,"destroy-on-close":``},{footer:e(()=>[m(f,{onClick:u[8]||=e=>T.value=!1},{default:e(()=>[...u[25]||=[o(`取消`,-1)]]),_:1}),m(f,{type:`primary`,loading:D.value,onClick:we},{default:e(()=>[o(a(O.value?`保存修改`:`确认创建`),1)]),_:1},8,[`loading`])]),default:e(()=>[m(Q,{ref_key:`typeFormRef`,ref:k,model:A,rules:be,"label-width":`90px`},{default:e(()=>[m(Y,{label:`类型名称`,prop:`name`},{default:e(()=>[m(_,{modelValue:A.name,"onUpdate:modelValue":u[4]||=e=>A.name=e,placeholder:`如: 性别、状态`},null,8,[`modelValue`])]),_:1}),m(Y,{label:`类型编码`,prop:`code`},{default:e(()=>[m(_,{modelValue:A.code,"onUpdate:modelValue":u[5]||=e=>A.code=e,placeholder:`如: gender、order_status`,disabled:O.value},null,8,[`modelValue`,`disabled`]),u[22]||=p(`div`,{class:`form-tip`},`编码唯一,用于程序中取值,创建后不可修改`,-1)]),_:1}),m(Y,{label:`描述`,prop:`description`},{default:e(()=>[m(_,{modelValue:A.description,"onUpdate:modelValue":u[6]||=e=>A.description=e,type:`textarea`,rows:2,placeholder:`选填`},null,8,[`modelValue`])]),_:1}),m(Y,{label:`状态`,prop:`status`},{default:e(()=>[m(Z,{modelValue:A.status,"onUpdate:modelValue":u[7]||=e=>A.status=e},{default:e(()=>[m(X,{value:1},{default:e(()=>[...u[23]||=[o(`启用`,-1)]]),_:1}),m(X,{value:0},{default:e(()=>[...u[24]||=[o(`禁用`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`]),m(Me,{modelValue:F.value,"onUpdate:modelValue":u[17]||=e=>F.value=e,title:I.value,width:`460px`,"destroy-on-close":``},{footer:e(()=>[m(f,{onClick:u[16]||=e=>F.value=!1},{default:e(()=>[...u[29]||=[o(`取消`,-1)]]),_:1}),m(f,{type:`primary`,loading:L.value,onClick:Oe},{default:e(()=>[o(a(R.value?`保存修改`:`确认创建`),1)]),_:1},8,[`loading`])]),default:e(()=>[m(Q,{ref_key:`itemFormRef`,ref:z,model:B,rules:xe,"label-width":`90px`},{default:e(()=>[m(Y,{label:`字典标签`,prop:`label`},{default:e(()=>[m(_,{modelValue:B.label,"onUpdate:modelValue":u[10]||=e=>B.label=e,placeholder:`显示文本,如: 男、启用`},null,8,[`modelValue`])]),_:1}),m(Y,{label:`字典值`,prop:`value`},{default:e(()=>[m(_,{modelValue:B.value,"onUpdate:modelValue":u[11]||=e=>B.value=e,placeholder:`存储值,如: male、1`},null,8,[`modelValue`])]),_:1}),m(Y,{label:`标签颜色`,prop:`color`},{default:e(()=>[p(`div`,ye,[m(Ne,{modelValue:B.color,"onUpdate:modelValue":u[12]||=e=>B.color=e},null,8,[`modelValue`]),u[26]||=p(`span`,{class:`form-tip`},`可选,设置后标签将显示对应颜色`,-1)])]),_:1}),m(Y,{label:`排序`,prop:`sort`},{default:e(()=>[m(Pe,{modelValue:B.sort,"onUpdate:modelValue":u[13]||=e=>B.sort=e,min:0,max:9999,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),m(Y,{label:`状态`,prop:`status`},{default:e(()=>[m(Z,{modelValue:B.status,"onUpdate:modelValue":u[14]||=e=>B.status=e},{default:e(()=>[m(X,{value:1},{default:e(()=>[...u[27]||=[o(`启用`,-1)]]),_:1}),m(X,{value:0},{default:e(()=>[...u[28]||=[o(`禁用`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),m(Y,{label:`备注`,prop:`description`},{default:e(()=>[m(_,{modelValue:B.description,"onUpdate:modelValue":u[15]||=e=>B.description=e,type:`textarea`,rows:2,placeholder:`选填`},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}},[[`__scopeId`,`data-v-aa3d11a2`]]);export{y as default};