20260905172534

This commit is contained in:
oneao committed 2026-09-05 17:25:35 +08:00
1 parent 1b01a31252
commit 7b00eeb88c
711 files changed
+2849 -959

No files matched your search

@@ -0,0 +1,3 @@
import{$ as e,G as t,Ht as n,I as r,J as i,Lt as a,M as o,Q as s,R as c,T as l,U as u,V as d,X as f,_ as p,a as m,b as h,d as g,ft as _,gt as v,it as y,p as ee,t as b,ut as x,v as S,w as C,wt as w,x as T,y as E}from"./_plugin-vue_export-helper-Ktpf6lZe.js";import{a as D,r as O,t as k}from"./routes-w7ij2FJx.js";import{D as A,T as j,_ as M,b as N,c as P,g as F,h as te,m as I,n as ne,s as re,t as L,y as R}from"./ui-BhP3ZSBa.js";import{a as z,c as ie,i as ae,n as B,o as oe,r as se,s as ce,t as le,v as V,y as ue}from"./tree-yUDFHuVX.js";import{i as de,r as H}from"./folder-open-xxjo8zBP.js";import{n as fe,r as U,t as pe}from"./search-PJpc0enG.js";import{n as me,t as he}from"./i18n-Tza9fYNM.js";import{t as ge}from"./trash-2-CumKnXxQ.js";import{n as W,r as _e,s as ve}from"./api-BHfsXASe.js";import{t as G}from"./FmsTable-CCmDuvFF.js";import{n as ye,r as be,t as K}from"./dataChanges-1MP4ya4d.js";import{n as xe,r as Se,t as Ce}from"./UnsavedChangesModal-khbqSNRL.js";o(),w(),y();var we={class:`i18n-name-modal`},q={class:`i18n-name-row__label`},Te={key:0,class:`i18n-name-modal__hint`},Ee=b(Object.assign({inheritAttrs:!1},{__name:`I18nNameModal`,props:{open:{type:Boolean,default:!1},title:{type:String,default:`多语言名称`},languages:{type:Array,default:()=>[]},modelValue:{type:Object,default:()=>({})},hint:{type:String,default:``}},emits:[`update:open`,`update:modelValue`,`confirm`],setup(r,{emit:i}){let a=r,o=i,c=x({});s(()=>a.open,e=>{e&&(c.value={...a.modelValue})});function d(e,t){c.value={...c.value,[e.code]:t}}function f(){o(`update:modelValue`,{...c.value}),o(`confirm`,{...c.value}),o(`update:open`,!1)}function p(){o(`update:open`,!1)}return(i,a)=>(u(),E(v(te),{open:r.open,title:r.title,width:520,"mask-closable":!1,onCancel:p},{footer:e(()=>[l(v(A),{type:`outline`,onClick:p},{default:e(()=>[...a[0]||=[C(`取消`,-1)]]),_:1}),l(v(A),{type:`primary`,onClick:f},{default:e(()=>[...a[1]||=[C(`确定`,-1)]]),_:1})]),default:e(()=>[S(`div`,we,[(u(!0),T(ee,null,t(r.languages,e=>(u(),T(`div`,{class:`i18n-name-row`,key:e.code},[S(`span`,q,n(e.name),1),l(v(F),{class:`i18n-name-row__input`,"model-value":c.value[e.code]||``,placeholder:`请输入${e.name}名称`,"onUpdate:modelValue":t=>d(e,t)},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`])]))),128)),r.hint?(u(),T(`p`,Te,n(r.hint),1)):h(``,!0)])]),_:1},8,[`open`,`title`]))}}),[[`__scopeId`,`data-v-1f24c706`]]);y(),o(),w(),m();var De={class:`mm-tree-panel`},Oe={class:`mm-tree-header`},ke={class:`mm-tree-header__actions`},Ae={class:`mm-tree-panel__scroll`},je={key:0,class:`mm-tree-empty`},Me={class:`mm-tree-node`},Ne=b({__name:`MenuTreePanel`,props:{treeData:{type:Array,required:!0},loading:{type:Boolean,default:!1},selectedId:{type:[String,Number],default:null},expandedKeys:{type:Array,default:()=>[]},unsavedIds:{type:Set,default:()=>new Set}},emits:[`update:expandedKeys`,`select`,`add`,`delete`,`drop`,`refresh`,`toggleEnable`],setup(t,{emit:r}){let i=t,o=r,c=x(``),d=p(()=>ae(i.treeData,c.value));s(c,e=>{o(`update:expandedKeys`,e.trim()?B(i.treeData):[])});let f=[{key:`directory`,label:`新增目录`,icon:V},{key:`page`,label:`新增页面`,icon:H},{key:`external`,label:`新增外链`,icon:de}];function m(e){if(!e.length)return;let t=String(e[0]);t!==String(i.selectedId)&&o(`select`,t)}function h(e){let t=e!=null&&i.unsavedIds.has(String(e.b_id)),n=f.map(e=>({...e,disabled:t}));return e&&(n.push({divider:!0}),n.push({key:`delete`,label:`删除`,icon:ge,danger:!0})),n}function _({item:e,node:t}){let n=t?String(t.b_id):null;e.key===`delete`?o(`delete`,n):o(`add`,{parentId:n,menuType:e.key})}function y({key:e}){o(`add`,{parentId:i.selectedId?String(i.selectedId):null,menuType:e})}return(r,i)=>(u(),T(`aside`,De,[S(`div`,Oe,[l(v(F),{modelValue:c.value,"onUpdate:modelValue":i[0]||=e=>c.value=e,"allow-clear":``,class:`mm-tree-search`},{prefix:e(()=>[l(v(pe),{size:14,class:`mm-tree-search__icon`})]),_:1},8,[`modelValue`]),S(`div`,ke,[l(v(A),{type:`ghost`,class:`mm-tree-header__icon-btn`,title:`刷新菜单树`,"aria-label":`刷新菜单树`,onClick:i[1]||=e=>o(`refresh`)},{default:e(()=>[l(v(fe),{size:14})]),_:1}),l(v(N),{items:f,onClick:y},{default:e(()=>[l(v(A),{type:`ghost`,class:`mm-tree-header__icon-btn`,title:`新增菜单`,"aria-label":`新增菜单`},{default:e(()=>[l(v(U),{size:14})]),_:1})]),_:1})])]),S(`div`,Ae,[t.loading?(u(),T(`div`,je,`加载中...`)):(u(),E(v(ne),{key:1,"tree-data":d.value,"field-names":{key:`b_id`,title:`b_name`,children:`children`},"expanded-keys":t.expandedKeys,"onUpdate:expandedKeys":i[3]||=e=>o(`update:expandedKeys`,e),"selected-keys":t.selectedId?[t.selectedId]:[],"context-menu":h,draggable:!c.value.trim(),onSelect:m,onContextMenuClick:_,onDrop:i[4]||=e=>o(`drop`,e)},{title:e(({node:e})=>[S(`span`,Me,[S(`span`,{class:a([`mm-tree-node__name`,{"is-disabled":Number(e.b_canuse)!==1}])},n(e.b_name||e.b_id||`(未命名)`),3),l(v(j),{class:`mm-tree-node__enable`,"model-value":Number(e.b_canuse)===1,onClick:i[2]||=g(()=>{},[`stop`]),onChLine truncated
WHERE b_power_type = 'action' AND b_id IS NOT NULL AND b_id <> ''
GROUP BY b_id ORDER BY b_id`);i.value=(e.data||[]).map(e=>({b_id:e.b_id,b_name:e.b_name})),r=!0,s.value=[]}catch(e){L.error(`加载权限库失败:`+(e?.message||e)),i.value=[]}finally{o.value=!1}}function g(){let e=s.value;if(!e.length){L.warning(`请先在权限库中勾选要导入的权限`);return}let t=new Set(a.value.map(e=>String(e.b_id||``).trim())),n=[];for(let r of e){if(t.has(String(r).trim()))continue;let e=i.value.find(e=>String(e.b_id)===String(r));n.push({b_id:String(r),b_name:e?.b_name||``,b_power_type:`action`,b_canuse:1}),t.add(String(r).trim())}if(!n.length){L.warning(`勾选的权限均已存在,无需导入`);return}a.value=[...a.value,...n],s.value=[],L.success(`已导入 ${n.length} 条权限`)}return d(()=>{r||h()}),(t,r)=>(u(),T(`div`,Je,[S(`div`,Ye,[r[2]||=S(`div`,{class:`mm-pane__title`},`权限库`,-1),S(`div`,Xe,[l(v(A),{type:`outline`,size:`small`,loading:o.value,onClick:h},{default:e(()=>[l(v(fe),{size:12}),r[1]||=C(` 刷新 `,-1)]),_:1},8,[`loading`]),l(v(A),{type:`primary`,size:`small`,disabled:!s.value.length,onClick:g},{default:e(()=>[l(v(U),{size:12}),C(` 导入选中`+n(s.value.length?`(${s.value.length})`:``),1)]),_:1},8,[`disabled`])])]),o.value?(u(),T(`div`,Ze,`加载中...`)):(u(),T(`div`,Qe,[l(G,{columns:c.value,"onUpdate:columns":r[0]||=e=>c.value=e,"data-source":i.value,seq:!1,"row-key":`b_id`,"row-selection":m.value,"auto-fit-width":!0,onChange:()=>{}},null,8,[`columns`,`data-source`,`row-selection`])]))]))}},[[`__scopeId`,`data-v-f48de0c8`]]);y(),o(),w();var et={class:`mm-page`},tt={class:`mm-body`},nt={class:`mm-main`},rt={class:`mm-main-toolbar`},it={key:0,class:`mm-edit-body`},at={class:`mm-form-col__card`},ot={key:1,class:`mm-config-state`},st={key:2,class:`mm-config-state`},ct={key:1,class:`mm-main__empty`},lt={style:{margin:`0`,"line-height":`1.7`,color:`var(--fms-text)`}},ut=b({__name:`index`,setup(t){function r(e){return`N'${String(e??``).replace(/'/g,`''`)}'`}let i=he(),a=p(()=>i.defaultLanguage?.b_id||i.languages[0]?.b_id||``),o=p(()=>i.languages.map(e=>({code:e.b_id,name:e.b_name,default:Number(e.b_default)===1}))),d=p(()=>i.nonDefaultLanguages.map(e=>({code:e.b_id,name:e.b_name}))),f=p(()=>i.defaultLanguage?.b_name||a.value||``),m=x([]),g=x(!1),_=x(null),y=x([]),b=new Set,w=x(!1),D=x(!1),O=x(null),k=x(null),j=x(null),M={value:!1},N=x({}),F=x({}),I=x([]),ne=x(!1),R=x([]),ae=x(``),B=x(!1);function V(){R.value=[],ae.value=`[]`,B.value=!1}let de=x(null),H=p(()=>_.value?z(m.value,_.value):null),U=p(()=>w.value||D.value),pe=p(()=>k.value?.b_menu_type||H.value?.b_menu_type||null),ge=p(()=>pe.value===`directory`),_e=p(()=>!!H.value&&!b.has(String(H.value.b_id)));function G(e){for(let t of e.children||[])if(!b.has(String(t.b_id))||G(t))return!0;return!1}function we(e,t=new Set){t.add(String(e.b_id));for(let n of e.children||[])we(n,t);return t}async function q(){g.value=!0;try{let e=await W(`s_menu`,`1 = 1`,`b_xh ASC, b_id ASC`);m.value=Ie(ie(le(e.data||[]))),b.clear()}catch(e){L.error(`加载菜单树失败:`+(e?.message||e))}finally{g.value=!1}}function Te(){let e=[...b].some(e=>z(m.value,e)),t=!!_.value&&b.has(String(_.value)),n=O.value&&Be();if(!e&&!n){q();return}ht({title:`刷新菜单树`,content:`刷新会用数据库数据重建整棵树,当前未保存的修改与未保存的新建菜单都将丢失。确定继续吗?`,okText:`刷新`,onOk:async()=>{let e=t||!_.value?null:String(_.value);t&&(_.value=null),await q(),e&&await J(e)}})}function De(){let e=_.value;if(e){if(!(O.value&&Be())){J(e);return}ht({title:`重载菜单配置`,content:`重载会放弃当前未保存的修改,改为从数据库重新加载。确定继续吗?`,okText:`重载`,onOk:async()=>{await J(e)}})}}function Oe(e){He(()=>{_.value=e})}function ke({parentId:e,menuType:t}){if(e&&b.has(String(e))){L.warning(`请先保存当前新建的菜单,再在其下新增子菜单`);return}He(()=>void je(e,t))}async function Ae({dragKey:e,dropKey:t,dropPosition:n}){let r=String(e),i=String(t);if(r===i)return;let a=Re(m.value,r),o=Re(m.value,i);if(!a||!o)return;let s=o.list[o.index];if(n===`inside`&&s.b_menu_type!==`directory`){L.warning(`只能将菜单放入目录下`);return}let c=s.b_parent_id??null,[l]=a.list.splice(a.index,1),u=[],d=new Set;if(n===`inside`)l.b_parent_id=s.b_id,s.children||(s.children=[],s.isLeaf=!1),s.children.push(l),d.add(s.children),d.add(a.list);else{l.b_parent_id=c;let e=o.list,t=o.index+ +(n===`after`);a.list===o.list&&a.index<o.index&&--t,e.splice(t,0,l),d.add(e)}if(d.forEach(e=>ze(e,u)),k.value){let e=String(k.value.b_id),t=!b.has(e)&&!!j.value,n=u.find(t=>String(t.b_id)===e);n&&(k.value.b_xh=n.b_xh,t&&(j.value.b_xh=n.b_xh)),e===r&&(k.value.b_parent_id=l.b_parent_id,t&&(j.value.b_parent_id=l.b_parent_id))}if(!u.length)return;let f=u.filter(e=>!b.has(String(e.b_id)));if(f.length)try{let e=f.map(e=>({table:`s_menu`,key_field:`b_id`,updates:[e]}));await ve(e),L.success(`排序已更新`)}catch(e){L.error(`排序更新失败:`+(e?.message||e) Line truncated