|
|
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,i as s,it as c,kt as l,nt as u,p as d,u as f,ut as p,v as m,y as h,z as g}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as _}from"./index-BLul_Qh8.js";import{t as v}from"./listTable-DKAruyoN.js";var y={style:{display:`flex`,"justify-content":`flex-end`}},b=h({__name:`Dictionaries`,setup(h){let b=c([]),x=c([]),S=c([]),C=c(!1),w=c(!1),T=c(!1),E=c(!0),D=c([]),O=u({dict_type:``}),k=u({dict_type:``,dict_name:``,remark:``,dict_sort:0}),A={maxHeight:`70vh`,overflow:`auto`},j=c([]);function M(e){let t=new Map;for(let n of e){t.has(n.dict_type)||t.set(n.dict_type,{dict_type:n.dict_type,dict_name:n.dict_name||``,remark:n.remark||``,dict_sort:n.dict_sort??0,item_count:0});let e=t.get(n.dict_type);e.item_count+=1,!e.dict_name&&n.dict_name&&(e.dict_name=n.dict_name),!e.remark&&n.remark&&(e.remark=n.remark),(n.dict_sort??0)<e.dict_sort&&(e.dict_sort=n.dict_sort??0)}x.value=Array.from(t.values()).sort((e,t)=>e.dict_sort-t.dict_sort||e.dict_type.localeCompare(t.dict_type)),S.value=x.value.map(e=>({value:e.dict_type,label:e.dict_name?`${e.dict_name}(${e.dict_type})`:e.dict_type}))}async function N(){C.value=!0;try{let{data:e}=await _.get(`/dict-items`);b.value=e,M(O.dict_type?b.value.filter(e=>e.dict_type===O.dict_type):b.value)}catch(t){e.error(t?.response?.data?.message??`加载数据字典失败`)}finally{C.value=!1}}function P(){E.value=!0,D.value=[],k.dict_type=``,k.dict_name=``,k.remark=``,k.dict_sort=0,j.value=[{item_label:``,item_value:``,item_remark:``,sort:0,is_active:!0}],T.value=!0}async function F(e){E.value=!1,k.dict_type=e.dict_type,k.dict_name=e.dict_name,k.remark=e.remark,k.dict_sort=e.dict_sort,C.value=!0;try{j.value=b.value.filter(t=>t.dict_type===e.dict_type).sort((e,t)=>(e.sort??0)-(t.sort??0)||e.id-t.id).map(e=>({id:e.id,item_label:e.item_label,item_value:e.item_value,item_remark:e.item_remark||``,sort:e.sort??0,is_active:e.is_active})),D.value=j.value.map(e=>e.id).filter(Boolean)}finally{C.value=!1}T.value=!0}async function I(){w.value=!0;try{let t=k.dict_type.trim(),n=k.dict_name.trim(),r=k.remark.trim();if(!t)return e.warning(`请先填写字典编码`),!1;if(!n)return e.warning(`请先填写字典名称`),!1;let i=j.value.map(e=>({...e,item_label:e.item_label.trim(),item_value:e.item_value.trim(),item_remark:e.item_remark.trim()})).filter(e=>e.item_label&&e.item_value);if(!i.length)return e.warning(`请至少保留一条完整的字典值(显示名+值)`),!1;if(E.value){for(let e of i)await _.post(`/dict-items`,{dict_type:t,dict_name:n,remark:r,dict_sort:k.dict_sort??0,item_label:e.item_label,item_value:e.item_value,item_remark:e.item_remark,sort:e.sort??0,is_active:e.is_active});e.success(`新增字典成功,共保存 ${i.length} 条字典值`)}else{let a=new Set;for(let e of i){let i={dict_type:t,dict_name:n,remark:r,dict_sort:k.dict_sort??0,item_label:e.item_label,item_value:e.item_value,item_remark:e.item_remark,sort:e.sort??0,is_active:e.is_active};e.id?(a.add(e.id),await _.put(`/dict-items/${e.id}`,i)):await _.post(`/dict-items`,i)}let o=D.value.filter(e=>!a.has(e));for(let e of o)await _.delete(`/dict-items/${e}`);e.success(`更新字典成功`)}return T.value=!1,await N(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}finally{w.value=!1}}function L(){j.value.push({item_label:``,item_value:``,item_remark:``,sort:j.value.length,is_active:!0})}function R(t){if(j.value.length<=1){e.warning(`至少保留一条字典值`);return}j.value.splice(t,1)}async function z(t){try{let n=b.value.filter(e=>e.dict_type===t.dict_type);for(let e of n)await _.delete(`/dict-items/${e.id}`);e.success(`删除字典成功`),await N()}catch(t){e.error(t?.response?.data?.message??`删除失败`)}}return n(N),(e,n)=>{let c=r(`a-option`),u=r(`a-select`),h=r(`a-button`),_=r(`a-space`),b=r(`a-table-column`),D=r(`a-popconfirm`),M=r(`a-table`),B=r(`a-card`),V=r(`a-input`),H=r(`a-form-item`),U=r(`a-textarea`),W=r(`a-input-number`),G=r(`a-switch`),K=r(`a-form`),q=r(`a-modal`);return t(),d(s,null,[m(B,{title:`系统设置 / 数据字典`},{extra:i(()=>[m(_,null,{default:i(()=>[m(u,{modelValue:O.dict_type,"onUpdate:modelValue":n[0]||=e=>O.dict_type=e,"allow-search":``,"allow-clear":``,style:{width:`320px`},placeholder:`搜索字典名称(留空查看全部)`,onChange:N},{default:i(()=>[(t(!0),d(s,null,g(S.value,e=>(t(),o(c,{key:e.value,value:e.value},{default:i(()=>[a(l(e.label),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`]),m(h,{onClick:N},{default:i(()=>[...n[6]||=[a(`刷新`,-1)]]),_:1}),m(h,{type:`primary`,onClick:P},{default:i(()=>[...n[7]||=[a(`新增字典`,-1)]]),_:1})]),_:1})]),default:i(()=>[m(M,{class:`list-data-table`,scroll:{x:p(v)},data:x.value,loading:C.value,"row-key":`dict_type`,pagination:{pageSize:10}},{columns:i(()=>[m(b,{title:`字典编码`,"data-index":`dict_type`,width:220,ellipsis:!0,tooltip:!0}),m(b,{title:`字典名称`,"data-index":`dict_name`,width:220,ellipsis:!0,tooltip:!0}),m(b,{title:`备注`,"data-index":`remark`,width:240,"min-width":160,ellipsis:!0,tooltip:!0}),m(b,{title:`排序`,"data-index":`dict_sort`,width:100,ellipsis:!0,tooltip:!0}),m(b,{title:`值数量`,"data-index":`item_count`,width:100,ellipsis:!0,tooltip:!0}),m(b,{title:`操作`,width:150,fixed:`right`,align:`center`},{cell:i(({record:e})=>[m(_,null,{default:i(()=>[m(h,{type:`text`,onClick:t=>F(e)},{default:i(()=>[...n[8]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),m(D,{content:`确定删除该字典及其全部字典值?`,onOk:t=>z(e)},{default:i(()=>[m(h,{type:`text`,status:`danger`},{default:i(()=>[...n[9]||=[a(`删除`,-1)]]),_:1})]),_:1},8,[`onOk`])]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`])]),_:1}),m(q,{visible:T.value,"onUpdate:visible":n[5]||=e=>T.value=e,title:E.value?`新增字典`:`编辑字典`,width:`70%`,"body-style":A,"confirm-loading":w.value,"on-before-ok":I},{default:i(()=>[m(K,{model:k,layout:`vertical`,class:`admin-modal-form`},{default:i(()=>[m(H,{label:`字典编码`,required:``},{default:i(()=>[m(V,{modelValue:k.dict_type,"onUpdate:modelValue":n[1]||=e=>k.dict_type=e,placeholder:`如:start_year`},null,8,[`modelValue`])]),_:1}),m(H,{label:`字典名称`,required:``},{default:i(()=>[m(V,{modelValue:k.dict_name,"onUpdate:modelValue":n[2]||=e=>k.dict_name=e,placeholder:`如:清单填报起始年份`},null,8,[`modelValue`])]),_:1}),m(H,{label:`备注`,class:`admin-modal-form__full`},{default:i(()=>[m(U,{modelValue:k.remark,"onUpdate:modelValue":n[3]||=e=>k.remark=e,"auto-size":{minRows:2,maxRows:4}},null,8,[`modelValue`])]),_:1}),m(H,{label:`排序`},{default:i(()=>[m(W,{modelValue:k.dict_sort,"onUpdate:modelValue":n[4]||=e=>k.dict_sort=e,min:0},null,8,[`modelValue`])]),_:1}),m(H,{label:`字典值列表`,class:`admin-modal-form__full`},{default:i(()=>[m(_,{direction:`vertical`,fill:``},{default:i(()=>[f(`div`,y,[m(h,{type:`primary`,size:`small`,onClick:L},{default:i(()=>[...n[10]||=[a(`新增参数`,-1)]]),_:1})]),m(M,{data:j.value,pagination:!1,"row-key":`id`},{columns:i(()=>[m(b,{title:`主键ID`,width:90},{cell:i(({record:e})=>[a(l(e.id||`-`),1)]),_:1}),m(b,{title:`热键值Text`},{cell:i(({record:e})=>[m(V,{modelValue:e.item_value,"onUpdate:modelValue":t=>e.item_value=t,placeholder:`请输入值`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),m(b,{title:`字典显示名`},{cell:i(({record:e})=>[m(V,{modelValue:e.item_label,"onUpdate:modelValue":t=>e.item_label=t,placeholder:`请输入显示名`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),m(b,{title:`排序`,width:120},{cell:i(({record:e})=>[m(W,{modelValue:e.sort,"onUpdate:modelValue":t=>e.sort=t,min:0},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),m(b,{title:`备注`},{cell:i(({record:e})=>[m(V,{modelValue:e.item_remark,"onUpdate:modelValue":t=>e.item_remark=t,placeholder:`备注`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),m(b,{title:`状态`,width:120},{cell:i(({record:e})=>[m(G,{modelValue:e.is_active,"onUpdate:modelValue":t=>e.is_active=t},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:1}),m(b,{title:`操作`,width:100},{cell:i(({rowIndex:e})=>[m(h,{type:`text`,status:`danger`,onClick:t=>R(e)},{default:i(()=>[...n[11]||=[a(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])]),_:1})]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`,`confirm-loading`])],64)}}});export{b as default}; |