Procházet zdrojové kódy

feat: 添加递归过滤未启用节点的功能,并优化权限管理界面样式

张涛 před 1 rokem
rodič
revize
8d6dd1cdad
70 změnil soubory, kde provedl 228 přidání a 145 odebrání
  1. 1 1
      dist/assets/About-0CIC9__Y.js
  2. 0 0
      dist/assets/Action-DkTZabj-.js
  3. 1 0
      dist/assets/Agent-B16Y5UVE.js
  4. 0 1
      dist/assets/Agent-Dq0k4dcR.js
  5. 1 1
      dist/assets/CardItem-vro119Ed.js
  6. 0 0
      dist/assets/ChatAsideMenu-BrEEzihw.js
  7. 1 1
      dist/assets/ContentContainer-CLx8X3lp.js
  8. 0 1
      dist/assets/Conversation-DRGmWGep.js
  9. 1 0
      dist/assets/Conversation-Ds-_Mw_S.js
  10. 0 0
      dist/assets/ConversationBoard-Dl2yep9W.js
  11. 0 0
      dist/assets/ConversationBoard-vRMT4Y3g.js
  12. 0 0
      dist/assets/ConversationHistory-CtAe-bxQ.js
  13. 0 0
      dist/assets/ConversationHistory-sZzmUpBM.js
  14. 0 0
      dist/assets/ConversationQA-BgKcpUYQ.js
  15. 0 7
      dist/assets/DifyDetail-1hCGzOxZ.js
  16. 7 0
      dist/assets/DifyDetail-CSSm1GMc.js
  17. 0 0
      dist/assets/Header-OE0jn8dI.js
  18. 0 0
      dist/assets/Intelligent-CUMGT5lE.js
  19. 0 0
      dist/assets/Knowledge-CZsWmgiF.js
  20. 0 0
      dist/assets/Knowledge-DedlZXfy.js
  21. 0 0
      dist/assets/KnowledgeDetail-H2vf-1hg.js
  22. 1 0
      dist/assets/LayoutExperience-BkZyMBLq.js
  23. 0 1
      dist/assets/LayoutExperience-C8XAVRo-.js
  24. 0 1
      dist/assets/LayoutPermission-C3gvQIqm.js
  25. 1 0
      dist/assets/LayoutPermission-Dirtes00.js
  26. 0 0
      dist/assets/Login-B-uSM4U3.js
  27. 0 0
      dist/assets/Login-DKdey0Tz.js
  28. 1 1
      dist/assets/Modal-Ddno67ei.js
  29. 0 0
      dist/assets/Model-CAizPxjd.js
  30. 0 0
      dist/assets/Model-DsvMiVEG.js
  31. 1 1
      dist/assets/NoPer-CMgxe1ob.js
  32. 0 1
      dist/assets/PermissionAccount-Bf9Da9XL.css
  33. 0 0
      dist/assets/PermissionAccount-Bsmo-KnO.js
  34. 0 0
      dist/assets/PermissionAccount-CxFK1fbm.js
  35. 1 0
      dist/assets/PermissionAccount-DjQAeBVU.css
  36. 0 0
      dist/assets/PermissionGroup-CF9kl4ge.js
  37. 0 1
      dist/assets/PermissionGroup-CswxGiiN.css
  38. 1 0
      dist/assets/PermissionGroup-DTgLRmuC.css
  39. 0 0
      dist/assets/PermissionGroup-xKmHm4hZ.js
  40. 0 0
      dist/assets/PermissionOrganization-DLQJ52RL.js
  41. 0 0
      dist/assets/PermissionResource-ClYK5k0b.js
  42. 0 0
      dist/assets/PermissionRole-BjvE09Zl.js
  43. 0 1
      dist/assets/PermissionRole-Bzj9eJ1a.css
  44. 0 0
      dist/assets/PermissionRole-luKEvPkZ.js
  45. 1 0
      dist/assets/PermissionRole-xiVZ8YjU.css
  46. 0 1
      dist/assets/Profiles-CqSxwZc1.js
  47. 1 0
      dist/assets/Profiles-D7rtDM2R.js
  48. 1 1
      dist/assets/RagFlowChat-CtGHmpDY.js
  49. 1 1
      dist/assets/Register-DM_UBViD.js
  50. 1 0
      dist/assets/Settings-B-df4Kly.js
  51. 0 1
      dist/assets/Settings-BAQgqgKG.js
  52. 0 0
      dist/assets/TreeParts-K3_MCIx1.js
  53. 2 2
      dist/assets/Xiaoshu-DRBUyn75.js
  54. 1 1
      dist/assets/api-conversation-board-RKCSKLCl.js
  55. 1 1
      dist/assets/common-itry0cgO.js
  56. 0 0
      dist/assets/index-BEBWr3Er.js
  57. 0 0
      dist/assets/knowledge-D-bsem99.js
  58. 1 0
      dist/assets/login-C4cDpkFP.js
  59. 1 1
      dist/assets/resource-Vc50rWSy.js
  60. 1 1
      dist/assets/use-all-agents-Bn7Gv7RC.js
  61. 0 1
      dist/assets/use-current-user-C2Q12F7l.js
  62. 1 0
      dist/assets/use-current-user-VI9OQADY.js
  63. 1 1
      dist/assets/utils-BmPkEYkY.js
  64. 1 1
      dist/index.html
  65. 64 40
      src/modules/permission/account/DeptConfigModal.vue
  66. 53 27
      src/modules/permission/account/index.vue
  67. 32 20
      src/modules/permission/group/index.vue
  68. 1 6
      src/modules/permission/role/DeptConfigModal.vue
  69. 35 20
      src/modules/permission/role/index.vue
  70. 10 0
      src/utils/permission.js

+ 1 - 1
dist/assets/About-BB5FGlps.js → dist/assets/About-0CIC9__Y.js

@@ -1 +1 @@
-import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as e,d as o}from"./index-CTXpubiH.js";const r={},c={src:"http://192.168.20.116/chatbot/q8F58WkrUB2j4BcK",style:{width:"100%",height:"100%","min-height":"700px"},frameborder:"0",allow:"microphone"};function n(s,a){return e(),o("iframe",c)}const h=t(r,[["render",n]]);export{h as default};
+import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as e,d as o}from"./index-BEBWr3Er.js";const r={},c={src:"http://192.168.20.116/chatbot/q8F58WkrUB2j4BcK",style:{width:"100%",height:"100%","min-height":"700px"},frameborder:"0",allow:"microphone"};function n(s,a){return e(),o("iframe",c)}const h=t(r,[["render",n]]);export{h as default};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Action-DkTZabj-.js


+ 1 - 0
dist/assets/Agent-B16Y5UVE.js

@@ -0,0 +1 @@
+import o from"./LayoutExperience-BkZyMBLq.js";import r from"./ContentContainer-CLx8X3lp.js";import{o as a,g as n,w as e,f as p,e as i}from"./index-BEBWr3Er.js";import"./Header-OE0jn8dI.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";/* empty css                                                                         */const C={__name:"Agent",setup(m){return(s,t)=>(a(),n(o,null,{default:e(()=>[p(r,null,{default:e(()=>t[0]||(t[0]=[i("div",{class:"agent"},"Agent",-1)])),_:1})]),_:1}))}};export{C as default};

+ 0 - 1
dist/assets/Agent-Dq0k4dcR.js

@@ -1 +0,0 @@
-import o from"./LayoutExperience-C8XAVRo-.js";import r from"./ContentContainer-D0EEvd1Y.js";import{o as a,g as n,w as e,f as p,e as i}from"./index-CTXpubiH.js";import"./Header-D42NFFj_.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-C2Q12F7l.js";/* empty css                                                                         */const B={__name:"Agent",setup(m){return(s,t)=>(a(),n(o,null,{default:e(()=>[p(r,null,{default:e(()=>t[0]||(t[0]=[i("div",{class:"agent"},"Agent",-1)])),_:1})]),_:1}))}};export{B as default};

+ 1 - 1
dist/assets/CardItem-CvGXHUUC.js → dist/assets/CardItem-vro119Ed.js

@@ -1 +1 @@
-import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as i,d as c,e as s,t as a,x as t,H as r,h as m,j as h,n as g}from"./index-CTXpubiH.js";import{c as f}from"./icon-map-MpRwWyE4.js";const p={class:"top-common"},v={class:"common-left"},$={class:"title"},y={class:"tips"},k={class:"common-right"},b={__name:"HeadManage",props:{title:{required:!0,type:String},tips:{type:String}},setup(e){return(n,d)=>(i(),c("div",p,[s("div",v,[s("div",$,a(e.title),1),s("div",y,a(e.tips),1)]),s("div",k,[t(n.$slots,"setting",{},void 0,!0)])]))}},x=_(b,[["__scopeId","data-v-85ab48cf"]]),I={class:"card-name"},C=["src"],S=["src"],B={class:"name"},H={class:"card-label"},M={class:"card-des"},N={class:"card-label"},V={class:"card-bottom"},j={class:"card-settings"},q={__name:"CardItem",props:{name:{type:String},img_src:{type:String},height:{type:Number,default:175},is_model:{type:Boolean,default:!1}},emits:["clickIcon"],setup(e,{emit:n}){const d=e,u=n,l=()=>{u("clickIcon",d.img_src)};return(o,w)=>(i(),c("div",{class:"card-container",style:g({height:`${e.height}px`})},[s("div",I,[e.is_model?m("",!0):(i(),c("img",{key:0,src:e.img_src,class:"logo",onClick:r(l,["stop"])},null,8,C)),e.is_model?(i(),c("img",{key:1,src:h(f)(e.img_src),class:"logo",onClick:r(l,["stop"])},null,8,S)):m("",!0),s("div",B,a(e.name),1)]),s("div",H,[t(o.$slots,"labels",{},void 0,!0)]),s("div",M,[t(o.$slots,"description",{},void 0,!0)]),s("div",N,[t(o.$slots,"labelBtn",{},void 0,!0)]),s("div",V,[t(o.$slots,"bottom",{},void 0,!0)]),s("div",j,[t(o.$slots,"settings",{},void 0,!0)])],4))}},A=_(q,[["__scopeId","data-v-5f9a43e9"]]);export{A as C,x as H};
+import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as i,d as c,e as s,t as a,x as t,H as r,h as m,j as h,n as g}from"./index-BEBWr3Er.js";import{c as f}from"./icon-map-MpRwWyE4.js";const p={class:"top-common"},v={class:"common-left"},$={class:"title"},y={class:"tips"},k={class:"common-right"},b={__name:"HeadManage",props:{title:{required:!0,type:String},tips:{type:String}},setup(e){return(n,d)=>(i(),c("div",p,[s("div",v,[s("div",$,a(e.title),1),s("div",y,a(e.tips),1)]),s("div",k,[t(n.$slots,"setting",{},void 0,!0)])]))}},x=_(b,[["__scopeId","data-v-85ab48cf"]]),I={class:"card-name"},C=["src"],S=["src"],B={class:"name"},H={class:"card-label"},M={class:"card-des"},N={class:"card-label"},V={class:"card-bottom"},j={class:"card-settings"},q={__name:"CardItem",props:{name:{type:String},img_src:{type:String},height:{type:Number,default:175},is_model:{type:Boolean,default:!1}},emits:["clickIcon"],setup(e,{emit:n}){const d=e,u=n,l=()=>{u("clickIcon",d.img_src)};return(o,w)=>(i(),c("div",{class:"card-container",style:g({height:`${e.height}px`})},[s("div",I,[e.is_model?m("",!0):(i(),c("img",{key:0,src:e.img_src,class:"logo",onClick:r(l,["stop"])},null,8,C)),e.is_model?(i(),c("img",{key:1,src:h(f)(e.img_src),class:"logo",onClick:r(l,["stop"])},null,8,S)):m("",!0),s("div",B,a(e.name),1)]),s("div",H,[t(o.$slots,"labels",{},void 0,!0)]),s("div",M,[t(o.$slots,"description",{},void 0,!0)]),s("div",N,[t(o.$slots,"labelBtn",{},void 0,!0)]),s("div",V,[t(o.$slots,"bottom",{},void 0,!0)]),s("div",j,[t(o.$slots,"settings",{},void 0,!0)])],4))}},A=_(q,[["__scopeId","data-v-5f9a43e9"]]);export{A as C,x as H};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/ChatAsideMenu-BrEEzihw.js


+ 1 - 1
dist/assets/ContentContainer-D0EEvd1Y.js → dist/assets/ContentContainer-CLx8X3lp.js

@@ -1 +1 @@
-import{_ as n}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o,d as a,x as r,n as s}from"./index-CTXpubiH.js";const c={__name:"ContentContainer",props:{containerStyle:Object},setup(e){return(t,l)=>(o(),a("div",{class:"content-container",style:s(e.containerStyle)},[r(t.$slots,"default",{},void 0,!0)],4))}},d=n(c,[["__scopeId","data-v-15a5a7b0"]]);export{d as default};
+import{_ as n}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o,d as a,x as r,n as s}from"./index-BEBWr3Er.js";const c={__name:"ContentContainer",props:{containerStyle:Object},setup(e){return(t,l)=>(o(),a("div",{class:"content-container",style:s(e.containerStyle)},[r(t.$slots,"default",{},void 0,!0)],4))}},d=n(c,[["__scopeId","data-v-15a5a7b0"]]);export{d as default};

+ 0 - 1
dist/assets/Conversation-DRGmWGep.js

@@ -1 +0,0 @@
-import e from"./LayoutExperience-C8XAVRo-.js";import a from"./ContentContainer-D0EEvd1Y.js";import{C as i}from"./ChatAsideMenu-Bw7dT8DK.js";import{o as n,g as m,w as o,f as r,e as p}from"./index-CTXpubiH.js";import"./Header-D42NFFj_.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-C2Q12F7l.js";/* empty css                                                                         */import"./utils-Du4OjJfW.js";import"./icon-map-MpRwWyE4.js";const N={__name:"Conversation",setup(s){return(l,t)=>(n(),m(e,null,{default:o(()=>[r(a,null,{default:o(()=>[r(i),t[0]||(t[0]=p("div",{class:"conversation"},"会话",-1))]),_:1})]),_:1}))}};export{N as default};

+ 1 - 0
dist/assets/Conversation-Ds-_Mw_S.js

@@ -0,0 +1 @@
+import e from"./LayoutExperience-BkZyMBLq.js";import a from"./ContentContainer-CLx8X3lp.js";import{C as i}from"./ChatAsideMenu-BrEEzihw.js";import{o as m,g as n,w as o,f as r,e as p}from"./index-BEBWr3Er.js";import"./Header-OE0jn8dI.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";/* empty css                                                                         */import"./utils-BmPkEYkY.js";import"./icon-map-MpRwWyE4.js";const V={__name:"Conversation",setup(s){return(l,t)=>(m(),n(e,null,{default:o(()=>[r(a,null,{default:o(()=>[r(i),t[0]||(t[0]=p("div",{class:"conversation"},"会话",-1))]),_:1})]),_:1}))}};export{V as default};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/ConversationBoard-Dl2yep9W.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/ConversationBoard-vRMT4Y3g.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/ConversationHistory-CtAe-bxQ.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/ConversationHistory-sZzmUpBM.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/ConversationQA-BgKcpUYQ.js


+ 0 - 7
dist/assets/DifyDetail-1hCGzOxZ.js

@@ -1,7 +0,0 @@
-import{c as i,o as c,g as p,w as a,f as t,i as u,t as v,r as f,S as h,m as b,d as g,e as k,h as w,U as x,j as l}from"./index-CTXpubiH.js";import S from"./LayoutExperience-C8XAVRo-.js";import B from"./ContentContainer-D0EEvd1Y.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./Header-D42NFFj_.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./use-current-user-C2Q12F7l.js";/* empty css                                                                         */const q={__name:"TopSetting",props:{current_label:String},setup(_){return(d,o)=>{const s=i("icon-apps"),n=i("a-breadcrumb-item"),r=i("router-link"),e=i("a-breadcrumb");return c(),p(e,{class:"breadcrumb"},{default:a(()=>[t(n,null,{default:a(()=>[t(s)]),_:1}),t(n,null,{default:a(()=>[t(r,{to:"/intelligent"},{default:a(()=>o[0]||(o[0]=[u("智能体")])),_:1})]),_:1}),t(n,null,{default:a(()=>[u(v(_.current_label),1)]),_:1})]),_:1})}}},C=m(q,[["__scopeId","data-v-1f20179f"]]),E={class:"body-container"},J=["src"],N={__name:"MessageBody",props:{id:{type:String,required:!0}},setup(_){const d=_,o=f(!0),s=window.DIFY_BASE_URL,n=h.get(),r=f("");return b(async()=>{r.value=s+"/app/"+d.id+`/workflow?token=${n}`;const e=document.getElementById("dify");e.onload=function(){e&&e.contentWindow&&e.contentWindow.postMessage(JSON.stringify({type:"insertStyle",value:`
-            body > div > div > div.sticky.top-0.left-0.right-0.z-30 > div{display:none;}
-            body > div > div > div.style_app___hJq8.flex.overflow-hidden{margin-top: -65px;}
-            .style_app___hJq8 > div:first-of-type > div:first-of-type{display:none;}
-            .style_app___hJq8 > div:first-of-type > nav> a:nth-child(2){display:none;}
-            .style_app___hJq8 > div:first-of-type > nav> a:nth-child(3){display:none;}
-            `}),r.value),o.value=!1}}),(e,I)=>{const y=i("a-spin");return c(),g("div",E,[k("iframe",{id:"dify",src:r.value,width:"100%",height:"100%",frameborder:"0"},null,8,J),o.value?(c(),p(y,{key:0,dot:""})):w("",!0)])}}},D=m(N,[["__scopeId","data-v-98ffed6c"]]),z={__name:"DifyDetail",setup(_){const d=x(),{id:o,name:s,mode:n}=d.query;return(r,e)=>(c(),p(S,null,{default:a(()=>[t(B,null,{default:a(()=>[t(C,{current_label:l(s)},null,8,["current_label"]),t(D,{id:l(o),mode:l(n)},null,8,["id","mode"])]),_:1})]),_:1}))}};export{z as default};

+ 7 - 0
dist/assets/DifyDetail-CSSm1GMc.js

@@ -0,0 +1,7 @@
+import{c as i,o as c,g as p,w as a,f as t,i as u,t as v,r as m,S as h,m as b,d as g,e as k,h as w,U as x,j as l}from"./index-BEBWr3Er.js";import S from"./LayoutExperience-BkZyMBLq.js";import B from"./ContentContainer-CLx8X3lp.js";import{_ as f}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./Header-OE0jn8dI.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";/* empty css                                                                         */const q={__name:"TopSetting",props:{current_label:String},setup(_){return(d,o)=>{const s=i("icon-apps"),n=i("a-breadcrumb-item"),r=i("router-link"),e=i("a-breadcrumb");return c(),p(e,{class:"breadcrumb"},{default:a(()=>[t(n,null,{default:a(()=>[t(s)]),_:1}),t(n,null,{default:a(()=>[t(r,{to:"/intelligent"},{default:a(()=>o[0]||(o[0]=[u("智能体")])),_:1})]),_:1}),t(n,null,{default:a(()=>[u(v(_.current_label),1)]),_:1})]),_:1})}}},C=f(q,[["__scopeId","data-v-1f20179f"]]),E={class:"body-container"},J=["src"],N={__name:"MessageBody",props:{id:{type:String,required:!0}},setup(_){const d=_,o=m(!0),s=window.DIFY_BASE_URL,n=h.get(),r=m("");return b(async()=>{r.value=s+"/app/"+d.id+`/workflow?token=${n}`;const e=document.getElementById("dify");e.onload=function(){e&&e.contentWindow&&e.contentWindow.postMessage(JSON.stringify({type:"insertStyle",value:`
+            body > div > div > div.sticky.top-0.left-0.right-0.z-30 > div{display:none;}
+            body > div > div > div.style_app___hJq8.flex.overflow-hidden{margin-top: -65px;}
+            .style_app___hJq8 > div:first-of-type > div:first-of-type{display:none;}
+            .style_app___hJq8 > div:first-of-type > nav> a:nth-child(2){display:none;}
+            .style_app___hJq8 > div:first-of-type > nav> a:nth-child(3){display:none;}
+            `}),r.value),o.value=!1}}),(e,I)=>{const y=i("a-spin");return c(),g("div",E,[k("iframe",{id:"dify",src:r.value,width:"100%",height:"100%",frameborder:"0"},null,8,J),o.value?(c(),p(y,{key:0,dot:""})):w("",!0)])}}},D=f(N,[["__scopeId","data-v-98ffed6c"]]),W={__name:"DifyDetail",setup(_){const d=x(),{id:o,name:s,mode:n}=d.query;return(r,e)=>(c(),p(S,null,{default:a(()=>[t(B,null,{default:a(()=>[t(C,{current_label:l(s)},null,8,["current_label"]),t(D,{id:l(o),mode:l(n)},null,8,["id","mode"])]),_:1})]),_:1}))}};export{W as default};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Header-OE0jn8dI.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Intelligent-CUMGT5lE.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Knowledge-CZsWmgiF.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Knowledge-DedlZXfy.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/KnowledgeDetail-H2vf-1hg.js


+ 1 - 0
dist/assets/LayoutExperience-BkZyMBLq.js

@@ -0,0 +1 @@
+import{H as o}from"./Header-OE0jn8dI.js";/* empty css                                                                         */import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as r,d as a,f as s,x as c}from"./index-BEBWr3Er.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";const p={class:"layout-expierience"},i={__name:"LayoutExperience",setup(n){return(e,_)=>(r(),a("div",p,[s(o),c(e.$slots,"default",{},void 0,!0)]))}},E=t(i,[["__scopeId","data-v-d5330c8b"]]);export{E as default};

+ 0 - 1
dist/assets/LayoutExperience-C8XAVRo-.js

@@ -1 +0,0 @@
-import{H as o}from"./Header-D42NFFj_.js";/* empty css                                                                         */import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as r,d as a,f as s,x as c}from"./index-CTXpubiH.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./use-current-user-C2Q12F7l.js";const p={class:"layout-expierience"},n={__name:"LayoutExperience",setup(i){return(e,_)=>(r(),a("div",p,[s(o),c(e.$slots,"default",{},void 0,!0)]))}},y=t(n,[["__scopeId","data-v-d5330c8b"]]);export{y as default};

+ 0 - 1
dist/assets/LayoutPermission-C3gvQIqm.js

@@ -1 +0,0 @@
-import{H as t}from"./Header-D42NFFj_.js";import{_ as r}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as s,o as a,d as c,f as o}from"./index-CTXpubiH.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./use-current-user-C2Q12F7l.js";const _={class:"layout-permission"},n={__name:"LayoutPermission",setup(i){return(m,p)=>{const e=s("router-view");return a(),c("div",_,[o(t),o(e)])}}},x=r(n,[["__scopeId","data-v-c382b4a5"]]);export{x as default};

+ 1 - 0
dist/assets/LayoutPermission-Dirtes00.js

@@ -0,0 +1 @@
+import{H as t}from"./Header-OE0jn8dI.js";import{_ as r}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as s,o as a,d as c,f as o}from"./index-BEBWr3Er.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";const _={class:"layout-permission"},i={__name:"LayoutPermission",setup(m){return(n,p)=>{const e=s("router-view");return a(),c("div",_,[o(t),o(e)])}}},y=r(i,[["__scopeId","data-v-c382b4a5"]]);export{y as default};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Login-B-uSM4U3.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Login-DKdey0Tz.js


+ 1 - 1
dist/assets/Modal-CtCdTcxg.js → dist/assets/Modal-Ddno67ei.js

@@ -1 +1 @@
-import{_ as x}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as s,o as d,g as m,w as t,f as n,i as _,t as B,ab as C,x as g,j as u,Z as S}from"./index-CTXpubiH.js";const w={__name:"BreadCrumbMenu",props:{current_label:String},setup(r){return(c,a)=>{const o=s("icon-apps"),e=s("a-breadcrumb-item"),l=s("a-breadcrumb");return d(),m(l,{class:"breadcrumb"},{default:t(()=>[n(e,null,{default:t(()=>[n(o)]),_:1}),n(e,null,{default:t(()=>a[0]||(a[0]=[_("权限管理")])),_:1}),n(e,null,{default:t(()=>[_(B(r.current_label),1)]),_:1})]),_:1})}}},N=x(w,[["__scopeId","data-v-ee9e17e5"]]),R={__name:"Modal",props:{visible:Boolean,title:{type:String,required:!0,default:"标题"}},emits:["ok","cancel"],setup(r,{emit:c}){const a=r,o=c,{visible:e,title:l}=C(a),p=()=>{o("ok")},b=()=>{o("cancel")};return(f,i)=>{const v=s("a-modal");return d(),m(v,{visible:u(e),"onUpdate:visible":i[0]||(i[0]=k=>S(e)?e.value=k:null),title:u(l),onOk:p,onCancel:b,width:"40%"},{default:t(()=>[g(f.$slots,"default")]),_:3},8,["visible","title"])}}};export{N as B,R as _};
+import{_ as x}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as s,o as d,g as m,w as t,f as n,i as _,t as B,ab as C,x as g,j as u,Z as S}from"./index-BEBWr3Er.js";const w={__name:"BreadCrumbMenu",props:{current_label:String},setup(r){return(c,a)=>{const o=s("icon-apps"),e=s("a-breadcrumb-item"),l=s("a-breadcrumb");return d(),m(l,{class:"breadcrumb"},{default:t(()=>[n(e,null,{default:t(()=>[n(o)]),_:1}),n(e,null,{default:t(()=>a[0]||(a[0]=[_("权限管理")])),_:1}),n(e,null,{default:t(()=>[_(B(r.current_label),1)]),_:1})]),_:1})}}},N=x(w,[["__scopeId","data-v-ee9e17e5"]]),R={__name:"Modal",props:{visible:Boolean,title:{type:String,required:!0,default:"标题"}},emits:["ok","cancel"],setup(r,{emit:c}){const a=r,o=c,{visible:e,title:l}=C(a),p=()=>{o("ok")},b=()=>{o("cancel")};return(f,i)=>{const v=s("a-modal");return d(),m(v,{visible:u(e),"onUpdate:visible":i[0]||(i[0]=k=>S(e)?e.value=k:null),title:u(l),onOk:p,onCancel:b,width:"40%"},{default:t(()=>[g(f.$slots,"default")]),_:3},8,["visible","title"])}}};export{N as B,R as _};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Model-CAizPxjd.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/Model-DsvMiVEG.js


+ 1 - 1
dist/assets/NoPer-nAhjqbCj.js → dist/assets/NoPer-CMgxe1ob.js

@@ -1 +1 @@
-import{d as u,f as o,w as e,u as l,c as s,o as d,i as a}from"./index-CTXpubiH.js";import{_ as i}from"./_plugin-vue_export-helper-DlAUqK2U.js";const m={class:"no-per"},f={__name:"NoPer",setup(x){const n=l(),r=()=>{n.push("/")};return(k,t)=>{const _=s("a-button"),c=s("a-space"),p=s("a-result");return d(),u("div",m,[o(p,{status:"warning",title:"抱歉,您无权限访问此页面"},{subtitle:e(()=>t[0]||(t[0]=[a(" 您没有权限访问此页面,请联系管理员 ")])),extra:e(()=>[o(c,null,{default:e(()=>[o(_,{type:"primary",onClick:r},{default:e(()=>t[1]||(t[1]=[a("返回首页")])),_:1})]),_:1})]),_:1})])}}},v=i(f,[["__scopeId","data-v-dfdaf366"]]);export{v as default};
+import{d as u,f as o,w as e,u as l,c as s,o as d,i as a}from"./index-BEBWr3Er.js";import{_ as i}from"./_plugin-vue_export-helper-DlAUqK2U.js";const m={class:"no-per"},f={__name:"NoPer",setup(x){const n=l(),r=()=>{n.push("/")};return(k,t)=>{const _=s("a-button"),c=s("a-space"),p=s("a-result");return d(),u("div",m,[o(p,{status:"warning",title:"抱歉,您无权限访问此页面"},{subtitle:e(()=>t[0]||(t[0]=[a(" 您没有权限访问此页面,请联系管理员 ")])),extra:e(()=>[o(c,null,{default:e(()=>[o(_,{type:"primary",onClick:r},{default:e(()=>t[1]||(t[1]=[a("返回首页")])),_:1})]),_:1})]),_:1})])}}},v=i(f,[["__scopeId","data-v-dfdaf366"]]);export{v as default};

+ 0 - 1
dist/assets/PermissionAccount-Bf9Da9XL.css

@@ -1 +0,0 @@
-.flex-row[data-v-1c34c14d]{display:flex;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}.flex-col[data-v-1c34c14d]{padding-left:12px;padding-right:12px;flex:1;min-width:0}.card-body[data-v-f866d898]{width:100%;transition-property:all;height:40%;overflow-y:auto;margin:1px}.title-box[data-v-f866d898]{display:flex;align-items:center;font-size:16px;margin-bottom:12px}.title-box>svg[data-v-f866d898]{margin-right:6px}.card-body[data-v-c1954a73]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-c1954a73]:first-child{margin-right:16px}.account-page-card[data-v-a1e8c472]{height:calc(100% - 56px)}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionAccount-Bsmo-KnO.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionAccount-CxFK1fbm.js


+ 1 - 0
dist/assets/PermissionAccount-DjQAeBVU.css

@@ -0,0 +1 @@
+.flex-row[data-v-1c34c14d]{display:flex;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}.flex-col[data-v-1c34c14d]{padding-left:12px;padding-right:12px;flex:1;min-width:0}.card-body[data-v-f866d898]{width:100%;transition-property:all;height:40%;overflow-y:auto;margin:1px}.title-box[data-v-f866d898]{display:flex;align-items:center;font-size:16px;margin-bottom:12px}.title-box>svg[data-v-f866d898]{margin-right:6px}.card-body[data-v-4694b105]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-4694b105]:first-child{margin-right:16px}.account-page-card[data-v-c66f6ece]{height:calc(100% - 56px)}.operation-btn-container button[data-v-c66f6ece]{padding:0}.operation-btn-container button[data-v-c66f6ece]:hover{background-color:transparent}.operation-btn-container button+button[data-v-c66f6ece]{margin-left:16px}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionGroup-CF9kl4ge.js


+ 0 - 1
dist/assets/PermissionGroup-CswxGiiN.css

@@ -1 +0,0 @@
-.membert-config-modal[data-v-6b3551ae]{width:100%;display:flex;justify-content:center}[data-v-6b3551ae] .arco-transfer{width:100%}[data-v-6b3551ae] .arco-transfer-view{width:45%;height:500px}.card-body[data-v-428fcbf4]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-428fcbf4]:first-child{margin-right:16px}.group-page-card[data-v-b57db6f9]{height:calc(100% - 56px)}.arco-modal-simple .arco-modal-footer[data-v-b57db6f9]{margin-top:0}

+ 1 - 0
dist/assets/PermissionGroup-DTgLRmuC.css

@@ -0,0 +1 @@
+.membert-config-modal[data-v-6b3551ae]{width:100%;display:flex;justify-content:center}[data-v-6b3551ae] .arco-transfer{width:100%}[data-v-6b3551ae] .arco-transfer-view{width:45%;height:500px}.card-body[data-v-428fcbf4]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-428fcbf4]:first-child{margin-right:16px}.group-page-card[data-v-47122e1d]{height:calc(100% - 56px)}.arco-modal-simple .arco-modal-footer[data-v-47122e1d]{margin-top:0}.operation-btn-container button[data-v-47122e1d]{padding:0}.operation-btn-container button[data-v-47122e1d]:hover{background-color:transparent}.operation-btn-container button+button[data-v-47122e1d]{margin-left:16px}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionGroup-xKmHm4hZ.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionOrganization-DLQJ52RL.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionResource-ClYK5k0b.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionRole-BjvE09Zl.js


+ 0 - 1
dist/assets/PermissionRole-Bzj9eJ1a.css

@@ -1 +0,0 @@
-.card-body[data-v-b5f0f870]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-b5f0f870]:first-child{margin-right:16px}.card-body[data-v-88ea36f1]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-88ea36f1]:first-child{margin-right:16px}.role-page-card[data-v-380f5823]{height:calc(100% - 56px)}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/PermissionRole-luKEvPkZ.js


+ 1 - 0
dist/assets/PermissionRole-xiVZ8YjU.css

@@ -0,0 +1 @@
+.card-body[data-v-b5f0f870]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-b5f0f870]:first-child{margin-right:16px}.card-body[data-v-51203b7c]{width:460px;height:500px;overflow-y:auto}.card-body[data-v-51203b7c]:first-child{margin-right:16px}.role-page-card[data-v-85405195]{height:calc(100% - 56px)}.operation-btn-container button[data-v-85405195]{padding:0}.operation-btn-container button[data-v-85405195]:hover{background-color:transparent}.operation-btn-container button+button[data-v-85405195]{margin-left:16px}

+ 0 - 1
dist/assets/Profiles-CqSxwZc1.js

@@ -1 +0,0 @@
-import o from"./LayoutExperience-C8XAVRo-.js";import r from"./ContentContainer-D0EEvd1Y.js";import{o as a,g as i,w as e,f as p,e as s}from"./index-CTXpubiH.js";import"./Header-D42NFFj_.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-C2Q12F7l.js";/* empty css                                                                         */const C={__name:"Profiles",setup(m){return(n,t)=>(a(),i(o,null,{default:e(()=>[p(r,null,{default:e(()=>t[0]||(t[0]=[s("div",{class:"profile"},"用户中心",-1)])),_:1})]),_:1}))}};export{C as default};

+ 1 - 0
dist/assets/Profiles-D7rtDM2R.js

@@ -0,0 +1 @@
+import e from"./LayoutExperience-BkZyMBLq.js";import r from"./ContentContainer-CLx8X3lp.js";import{o as a,g as i,w as o,f as p,e as m}from"./index-BEBWr3Er.js";import"./Header-OE0jn8dI.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";/* empty css                                                                         */const k={__name:"Profiles",setup(s){return(n,t)=>(a(),i(e,null,{default:o(()=>[p(r,null,{default:o(()=>t[0]||(t[0]=[m("div",{class:"profile"},"用户中心",-1)])),_:1})]),_:1}))}};export{k as default};

+ 1 - 1
dist/assets/RagFlowChat-CoabH5he.js → dist/assets/RagFlowChat-CtGHmpDY.js

@@ -1 +1 @@
-import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as e,d as o}from"./index-CTXpubiH.js";const r={},c={src:"http://192.168.20.116/chatbot/q8F58WkrUB2j4BcK",style:{width:"100%",height:"100%","min-height":"700px"},frameborder:"0",allow:"microphone"};function a(n,s){return e(),o("iframe",c)}const _=t(r,[["render",a]]);export{_ as default};
+import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as e,d as o}from"./index-BEBWr3Er.js";const r={},c={src:"http://192.168.20.116/chatbot/q8F58WkrUB2j4BcK",style:{width:"100%",height:"100%","min-height":"700px"},frameborder:"0",allow:"microphone"};function a(n,s){return e(),o("iframe",c)}const _=t(r,[["render",a]]);export{_ as default};

+ 1 - 1
dist/assets/Register-BVNWkICW.js → dist/assets/Register-DM_UBViD.js

@@ -1 +1 @@
-import{_ as e}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{d as r,o}from"./index-CTXpubiH.js";const t={};function c(n,s){return o(),r("div",null,"注册")}const f=e(t,[["render",c]]);export{f as default};
+import{_ as e}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{d as r,o}from"./index-BEBWr3Er.js";const t={};function c(n,s){return o(),r("div",null,"注册")}const f=e(t,[["render",c]]);export{f as default};

+ 1 - 0
dist/assets/Settings-B-df4Kly.js

@@ -0,0 +1 @@
+import o from"./LayoutExperience-BkZyMBLq.js";import r from"./ContentContainer-CLx8X3lp.js";import{o as a,g as i,w as e,f as s,e as n}from"./index-BEBWr3Er.js";import"./Header-OE0jn8dI.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-VI9OQADY.js";import"./login-C4cDpkFP.js";/* empty css                                                                         */const C={__name:"Settings",setup(p){return(m,t)=>(a(),i(o,null,{default:e(()=>[s(r,null,{default:e(()=>t[0]||(t[0]=[n("div",{class:"settings"},"设置",-1)])),_:1})]),_:1}))}};export{C as default};

+ 0 - 1
dist/assets/Settings-BAQgqgKG.js

@@ -1 +0,0 @@
-import o from"./LayoutExperience-C8XAVRo-.js";import r from"./ContentContainer-D0EEvd1Y.js";import{o as a,g as s,w as e,f as i,e as n}from"./index-CTXpubiH.js";import"./Header-D42NFFj_.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./use-current-user-C2Q12F7l.js";/* empty css                                                                         */const B={__name:"Settings",setup(p){return(m,t)=>(a(),s(o,null,{default:e(()=>[i(r,null,{default:e(()=>t[0]||(t[0]=[n("div",{class:"settings"},"设置",-1)])),_:1})]),_:1}))}};export{B as default};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/TreeParts-K3_MCIx1.js


+ 2 - 2
dist/assets/Xiaoshu-DaaRCvRD.js → dist/assets/Xiaoshu-DRBUyn75.js

@@ -1,4 +1,4 @@
-import{u as B,r,m as L,o as s,g as i,w as v,d as y,F as U,h as u,j as c,al as l,L as e}from"./index-CTXpubiH.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import{u as C}from"./use-current-user-C2Q12F7l.js";/* empty css                                                                         */import R from"./ContentContainer-D0EEvd1Y.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const W={__name:"Xiaoshu",props:{},setup(p){const d=B(),{bus:_}=l,m=p,t=r(!1),n=r([]),f=e("XIAOSHU_URL"),h=e("WEBSOCKET_BASE_URL"),x=e("API_BASE_URL"),b=e("ASSETS_BASE_URL"),S={padding:0};return L(()=>{const o=C(),a=o.token,g={userName:o.username,token:a},k=JSON.stringify(g),A=`
+import{u as B,r,m as L,o as s,g as i,w as v,d as y,F as U,h as u,j as c,am as l,L as e}from"./index-BEBWr3Er.js";import"./Header.vue_vue_type_style_index_0_scoped_2e420fdc_lang-BFP9Vtxc.js";import{u as C}from"./use-current-user-VI9OQADY.js";/* empty css                                                                         */import R from"./ContentContainer-CLx8X3lp.js";import"./login-C4cDpkFP.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const q={__name:"Xiaoshu",props:{},setup(p){const d=B(),{bus:_}=l,m=p,t=r(!1),n=r([]),f=e("XIAOSHU_URL"),h=e("WEBSOCKET_BASE_URL"),x=e("API_BASE_URL"),b=e("ASSETS_BASE_URL"),S={padding:0};return L(()=>{const o=C(),a=o.token,g={userName:o.username,token:a},k=JSON.stringify(g),A=`
     window.WEBSOCKET_BASE_URL = '${h}';
     window.API_BASE_URL = '${x}';
     window.ASSETS_BASE_URL = '${b}';
@@ -40,4 +40,4 @@ import{u as B,r,m as L,o as s,g as i,w as v,d as y,F as U,h as u,j as c,al as l,
       padding-bottom: 0;
       border-bottom: none;
     }
-  `;_.$on("xiaoshuAsideBack",function(){d.push("/chat/qa")}),n.value=[{jsBeforeLoaders:[{content:A}]},{jsAfterLoaders:[{content:E}]},{cssAfterLoaders:[{content:w}]}],t.value=!0}),(o,a)=>(s(),i(R,{containerStyle:S},{default:v(()=>[t.value?u("",!0):(s(),y(U,{key:0},[],64)),t.value?(s(),i(c(l),{key:1,width:"100%",height:"100%",name:"xiaoshu",url:c(f),sync:!1,props:m,plugins:n.value},null,8,["url","props","plugins"])):u("",!0)]),_:1}))}};export{W as default};
+  `;_.$on("xiaoshuAsideBack",function(){d.push("/chat/qa")}),n.value=[{jsBeforeLoaders:[{content:A}]},{jsAfterLoaders:[{content:E}]},{cssAfterLoaders:[{content:w}]}],t.value=!0}),(o,a)=>(s(),i(R,{containerStyle:S},{default:v(()=>[t.value?u("",!0):(s(),y(U,{key:0},[],64)),t.value?(s(),i(c(l),{key:1,width:"100%",height:"100%",name:"xiaoshu",url:c(f),sync:!1,props:m,plugins:n.value},null,8,["url","props","plugins"])):u("",!0)]),_:1}))}};export{q as default};

+ 1 - 1
dist/assets/api-conversation-board-B7_57MSo.js → dist/assets/api-conversation-board-RKCSKLCl.js

@@ -1 +1 @@
-import{A as m}from"./index-CTXpubiH.js";const g=t=>{const s="/api/user/menus",a={};return"search"in t&&t.search&&(a.keyword=t.search),new Promise((o,i)=>{m({url:s,method:"get",params:a}).then(e=>{if(e.code/1===200){const c=e.data,r=[];if(c&&Array.isArray(c)){const h=c.length;for(let d=0;d<h;d++){const n=c[d];r.push({name:n.name,icon:n.icon,img:n.img,description:n.desc,id:n.id,agentType:n.agent_type,menuId:n.menuId})}}o({code:e.code,data:r,msg:e.msg})}else o(e)}).catch(i)})},l=t=>{const s="/api/label/list",a={};return"search"in t&&t.search&&(a.keyword=t.search),new Promise((o,i)=>{m({url:s,method:"get",params:a}).then(e=>{e.code/1===200?o({code:e.code,data:e.data.rows,msg:e.msg}):o(e)}).catch(i)})};export{g as a,l as c};
+import{A as m}from"./index-BEBWr3Er.js";const g=t=>{const s="/api/user/menus",a={};return"search"in t&&t.search&&(a.keyword=t.search),new Promise((o,i)=>{m({url:s,method:"get",params:a}).then(e=>{if(e.code/1===200){const c=e.data,r=[];if(c&&Array.isArray(c)){const h=c.length;for(let d=0;d<h;d++){const n=c[d];r.push({name:n.name,icon:n.icon,img:n.img,description:n.desc,id:n.id,agentType:n.agent_type,menuId:n.menuId})}}o({code:e.code,data:r,msg:e.msg})}else o(e)}).catch(i)})},l=t=>{const s="/api/label/list",a={};return"search"in t&&t.search&&(a.keyword=t.search),new Promise((o,i)=>{m({url:s,method:"get",params:a}).then(e=>{e.code/1===200?o({code:e.code,data:e.data.rows,msg:e.msg}):o(e)}).catch(i)})};export{g as a,l as c};

+ 1 - 1
dist/assets/common-pfD_6tMj.js → dist/assets/common-itry0cgO.js

@@ -1 +1 @@
-import{A as e}from"./index-CTXpubiH.js";function a(){return e({url:"/api/role/list",method:"get",params:{current:1,pageSize:999}})}function i(){return e({url:"/api/dept/list",method:"get"})}function s(){return e({url:"/api/knowledge/list",method:"get",params:{current:1,pageSize:999}})}function l(){return e({url:"/api/dialog/list",method:"get",params:{current:1,pageSize:999}})}export{a as Q,i as a,s as b,l as c};
+import{A as e}from"./index-BEBWr3Er.js";function a(){return e({url:"/api/role/list",method:"get",params:{current:1,pageSize:999}})}function i(){return e({url:"/api/dept/list",method:"get"})}function s(){return e({url:"/api/knowledge/list",method:"get",params:{current:1,pageSize:999}})}function l(){return e({url:"/api/dialog/list",method:"get",params:{current:1,pageSize:999}})}export{a as Q,i as a,s as b,l as c};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/index-BEBWr3Er.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/knowledge-D-bsem99.js


+ 1 - 0
dist/assets/login-C4cDpkFP.js

@@ -0,0 +1 @@
+import{A as t}from"./index-BEBWr3Er.js";function u(r){return t({url:"/api/auth/v2/login",method:"post",data:r})}function a(r){return t({url:"/api/auth/v2/register",method:"post",data:r})}function o(r){return t({url:`/api/auth/v2/sync?userFlag=${r}`,method:"get"})}function s(){return t({url:"/api/user/user_info",method:"get"})}function n(){return t({url:"/api/user/user_routers",method:"get"})}export{n as Q,o as a,s as b,u as l,a as r};

+ 1 - 1
dist/assets/resource-BYkdYiSL.js → dist/assets/resource-Vc50rWSy.js

@@ -1 +1 @@
-import{A as t}from"./index-CTXpubiH.js";const r="/api/menu";function o(){return t({url:`${r}/tree_select`,method:"get"})}function n(e){return t({url:`${r}/${e}`,method:"get"})}function s(e){return t({url:`${r}/status`,method:"put",data:e})}function a(e){return t({url:`${r}/edit_menu`,method:"put",data:e})}function c(e){return t({url:`${r}/add_menu`,method:"post",data:e})}function d(e){return t({url:`${r}/${e}`,method:"delete"})}export{c as C,d as D,o as Q,s as U,n as a,a as b};
+import{A as t}from"./index-BEBWr3Er.js";const r="/api/menu";function o(){return t({url:`${r}/tree_select`,method:"get"})}function n(e){return t({url:`${r}/${e}`,method:"get"})}function s(e){return t({url:`${r}/status`,method:"put",data:e})}function a(e){return t({url:`${r}/edit_menu`,method:"put",data:e})}function c(e){return t({url:`${r}/add_menu`,method:"post",data:e})}function d(e){return t({url:`${r}/${e}`,method:"delete"})}export{c as C,d as D,o as Q,s as U,n as a,a as b};

+ 1 - 1
dist/assets/use-all-agents-Dak-gZzJ.js → dist/assets/use-all-agents-Bn7Gv7RC.js

@@ -1 +1 @@
-import{D as a,X as l}from"./index-CTXpubiH.js";import{a as r,j as i}from"./utils-Du4OjJfW.js";function u(s){const t=i(s);l.setItem(t)}function c(){const s=l.getItem(),t=r(s);return t===null?[]:t}const h=a("all_agents",{state:()=>({agents:[]}),actions:{getList(){if(this.agents.length===0){const t=c();return this.agents=t,this.agents}return this.agents},getInfo(s){if(!s)return null;const t=this.getList(),o=t.length;for(let e=0;e<o;e++){const n=t[e];if(n.id===s)return n}return null},setList(s){const t=r(i(s));this.agents=t,u(t)}}});export{h as u};
+import{D as a,X as l}from"./index-BEBWr3Er.js";import{a as r,j as i}from"./utils-BmPkEYkY.js";function u(s){const t=i(s);l.setItem(t)}function c(){const s=l.getItem(),t=r(s);return t===null?[]:t}const h=a("all_agents",{state:()=>({agents:[]}),actions:{getList(){if(this.agents.length===0){const t=c();return this.agents=t,this.agents}return this.agents},getInfo(s){if(!s)return null;const t=this.getList(),o=t.length;for(let e=0;e<o;e++){const n=t[e];if(n.id===s)return n}return null},setList(s){const t=r(i(s));this.agents=t,u(t)}}});export{h as u};

+ 0 - 1
dist/assets/use-current-user-C2Q12F7l.js

@@ -1 +0,0 @@
-import{A as o,D as c,S as i,ak as m,am as d}from"./index-CTXpubiH.js";function g(e){return o({url:"/api/auth/v2/login",method:"post",data:e})}function f(e){return o({url:"/api/auth/v2/register",method:"post",data:e})}function k(e){return o({url:`/api/auth/v2/sync?userFlag=${e}`,method:"get"})}function h(){return o({url:"/api/user/user_info",method:"get"})}function p(){return o({url:"/api/user/user_routers",method:"get"})}const y=c("current_user",{persist:{enabled:!0,strategies:[{key:"info",storage:localStorage,paths:["username"]}]},state:()=>({name:"Jack",token_type:"",token:i.get(),username:"",nickname:"",dept:[],roles:[],permissions:[],user:{}}),actions:{updateName(e){this.name=e},toLogin(e){const{username:s,password:r}=e;return new Promise((n,a)=>{g({username:s,password:r}).then(t=>{t.code==200&&t.data.access_token.length?(this.token=t.data.access_token,this.token_type=t.data.token_type,this.username=t.data.username,this.nickname=t.data.nickname,i.set(t.data.access_token),n(t.msg),this.getInfo()):a(t.msg)}).catch(t=>{a(t)})})},async getRoutesList(){const{code:e,data:{routers:s}}=await p();if(e===200)return new Promise((r,n)=>{try{m.setItem(JSON.stringify(s)),r()}catch(a){n(a)}})},async getUserInfo(){const{code:e,data:{permissions:s,dept:r,roles:n}}=await h();if(e===200)return new Promise((a,t)=>{try{d.setItem(JSON.stringify({permissions:s,dept:r,roles:n})),a()}catch(u){t(u)}})}}});export{k as a,f as r,y as u};

+ 1 - 0
dist/assets/use-current-user-VI9OQADY.js

@@ -0,0 +1 @@
+import{D as c,S as r,al as u,an as m}from"./index-BEBWr3Er.js";import{l as d,Q as k,b as g}from"./login-C4cDpkFP.js";const f=c("current_user",{persist:{enabled:!0,strategies:[{key:"info",storage:localStorage,paths:["username"]}]},state:()=>({name:"Jack",token_type:"",token:r.get(),username:"",nickname:"",dept:[],roles:[],permissions:[],user:{}}),actions:{updateName(t){this.name=t},toLogin(t){const{username:a,password:n}=t;return new Promise((o,s)=>{d({username:a,password:n}).then(e=>{e.code==200&&e.data.access_token.length?(this.token=e.data.access_token,this.token_type=e.data.token_type,this.username=e.data.username,this.nickname=e.data.nickname,r.set(e.data.access_token),o(e.msg),this.getInfo()):s(e.msg)}).catch(e=>{s(e)})})},async getRoutesList(){const{code:t,data:{routers:a}}=await k();if(t===200)return new Promise((n,o)=>{try{u.setItem(JSON.stringify(a)),n()}catch(s){o(s)}})},async getUserInfo(){const{code:t,data:{permissions:a,dept:n,roles:o}}=await g();if(t===200)return new Promise((s,e)=>{try{m.setItem(JSON.stringify({permissions:a,dept:n,roles:o})),s()}catch(i){e(i)}})}}});export{f as u};

+ 1 - 1
dist/assets/utils-Du4OjJfW.js → dist/assets/utils-BmPkEYkY.js

@@ -1 +1 @@
-import{L as c}from"./index-CTXpubiH.js";const a=t=>JSON.stringify(t),f=t=>{try{return JSON.parse(t)}catch(e){return console.log(e),null}},p=(t,e,o)=>{if(typeof t!="function")return new Error("debounce func is not a function");typeof o===void 0&&(o=!1);let n;return function(...r){const s=this;n&&clearTimeout(n),o&&!n&&t.apply(s,r),n=setTimeout(function(){n=null,o||t.apply(s,r)},e)}},w=t=>{{const e=c("ASSETS_BASE_URL");if(t.indexOf("http")===0){const n=new URL(t).origin;return t.replace(n,e)}else return`${e}${t}`}},y=(t,e)=>{if(typeof t!="function")throw new Error(`${t} is not a function`);let o=0,n=null;return function(...r){const s=this,l=e-(new Date-o);l<=0?(t.call(s,...r),o=new Date,clearTimeout(n),n=null):n||(n=setTimeout(function(){clearTimeout(n),n=null,t.call(s,...r),o=new Date},l))}};export{f as a,p as b,y as c,w as f,a as j};
+import{L as c}from"./index-BEBWr3Er.js";const a=t=>JSON.stringify(t),f=t=>{try{return JSON.parse(t)}catch(e){return console.log(e),null}},p=(t,e,o)=>{if(typeof t!="function")return new Error("debounce func is not a function");typeof o===void 0&&(o=!1);let n;return function(...r){const s=this;n&&clearTimeout(n),o&&!n&&t.apply(s,r),n=setTimeout(function(){n=null,o||t.apply(s,r)},e)}},w=t=>{{const e=c("ASSETS_BASE_URL");if(t.indexOf("http")===0){const n=new URL(t).origin;return t.replace(n,e)}else return`${e}${t}`}},y=(t,e)=>{if(typeof t!="function")throw new Error(`${t} is not a function`);let o=0,n=null;return function(...r){const s=this,l=e-(new Date-o);l<=0?(t.call(s,...r),o=new Date,clearTimeout(n),n=null):n||(n=setTimeout(function(){clearTimeout(n),n=null,t.call(s,...r),o=new Date},l))}};export{f as a,p as b,y as c,w as f,a as j};

+ 1 - 1
dist/index.html

@@ -6,7 +6,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>大模型2.0</title>
     <script type="module" src="/config.js"></script>
-    <script type="module" crossorigin src="/assets/index-CTXpubiH.js"></script>
+    <script type="module" crossorigin src="/assets/index-BEBWr3Er.js"></script>
     <link rel="stylesheet" crossorigin href="/assets/index-VA7QPrnA.css">
   </head>
   <body>

+ 64 - 40
src/modules/permission/account/DeptConfigModal.vue

@@ -1,14 +1,27 @@
 <template>
-  <a-modal width="50%" v-model:visible="visible" :title="$t('permission.account.dept_config')" @cancel="handleCancel"
-    @ok="editDeptHandleOk">
-    <div style="display: flex;">
+  <a-modal
+    width="50%"
+    v-model:visible="visible"
+    :title="$t('permission.account.dept_config')"
+    @cancel="handleCancel"
+    @ok="editDeptHandleOk"
+  >
+    <div style="display: flex">
       <a-card class="card-body" :title="$t('permission.account.organization')" hoverable>
-        <a-tree :data="dept_list" v-model:checked-keys="checked_keys" v-model:expanded-keys="expand_keys"
-          :checkable="true" :check-strictly="true" :show-line="true" @check="onCheck" :fieldNames="{
+        <a-tree
+          :data="dept_list"
+          ref="treeRef"
+          v-model:checked-keys="checked_keys"
+          :checkable="true"
+          :check-strictly="true"
+          :show-line="true"
+          @check="onCheck"
+          :fieldNames="{
             key: 'deptId',
             title: 'deptName',
-            children: 'children',
-          }">
+            children: 'children'
+          }"
+        >
         </a-tree>
       </a-card>
       <a-card class="card-body" :title="$t('permission.account.user_department')">
@@ -18,7 +31,7 @@
           </a-tag>
         </a-space>
         <a-divider />
-        <div style="margin-bottom: 8px;">{{ $t('permission.account.department_roles') }}:</div>
+        <div style="margin-bottom: 8px">{{ $t('permission.account.department_roles') }}:</div>
         <a-space wrap>
           <a-tag v-for="item of check_strictly_dept_role" :key="item.roleId" color="arcoblue">
             {{ item.roleName }}
@@ -30,7 +43,7 @@
 </template>
 
 <script setup>
-import { ref, toRefs, watch } from 'vue';
+import { ref, toRefs, watch, nextTick } from 'vue';
 
 // 定义组件的 props 和 emits
 const props = defineProps({
@@ -49,18 +62,17 @@ const { visible, dept_list, dept_detail } = toRefs(props);
 
 const emit = defineEmits(['close', 'ok']);
 
+const treeRef = ref(null);
 // 组件内部状态
 const checked_keys = ref([]);
-// 默认展开第一节
-const expand_keys = ref(['0']);
 const check_strictly = ref([]);
 const check_strictly_dept_role = ref([]);
 
 // 递归取消所有子节点的选择
 const cancelChildSelection = (node, selected_nodes) => {
   if (node.children && node.children.length > 0) {
-    node.children.forEach(child => {
-      const child_index = selected_nodes.findIndex(val => val.deptId === child.deptId);
+    node.children.forEach((child) => {
+      const child_index = selected_nodes.findIndex((val) => val.deptId === child.deptId);
       if (child_index !== -1) {
         // 取消子节点的选择
         selected_nodes.splice(child_index, 1);
@@ -69,7 +81,7 @@ const cancelChildSelection = (node, selected_nodes) => {
       }
     });
   }
-}
+};
 // FIXME:选择和取消选择的bug
 // 处理树形组件的勾选变化
 const onCheck = (new_checked_keys, event) => {
@@ -108,36 +120,48 @@ const editDeptHandleOk = () => {
   emit('ok', checked_keys.value);
 };
 
-watch(() => props.dept_detail, (newVal) => {
-  if (newVal.length > 0) {
-    newVal.forEach(val => {
-      if (!checked_keys.value.includes(val.deptId)) {
-        check_strictly.value.push({
-          deptId: val.deptId,
-          deptName: val.deptName
-        });
-        checked_keys.value.push(val.deptId);
-        expand_keys.value.push(val.deptId);
-      }
-
-      val.roles.forEach((role) => {
-        // 判断是否存在同样的 roleId,如果不存在则添加
-        if (!check_strictly_dept_role.value.some(item => item.roleId === role.roleId)) {
-          check_strictly_dept_role.value.push({
-            roleId: role.roleId,
-            roleName: role.roleName,
-            deptId: val.deptId
+watch(
+  () => props.dept_detail,
+  (newVal) => {
+    if (newVal.length > 0) {
+      newVal.forEach((val) => {
+        if (!checked_keys.value.includes(val.deptId)) {
+          check_strictly.value.push({
+            deptId: val.deptId,
+            deptName: val.deptName
           });
+          checked_keys.value.push(val.deptId);
         }
+
+        val.roles.forEach((role) => {
+          // 判断是否存在同样的 roleId,如果不存在则添加
+          if (!check_strictly_dept_role.value.some((item) => item.roleId === role.roleId)) {
+            check_strictly_dept_role.value.push({
+              roleId: role.roleId,
+              roleName: role.roleName,
+              deptId: val.deptId
+            });
+          }
+        });
       });
-    });
-  } else {
-    checked_keys.value = [];
-    expand_keys.value = [];
-    check_strictly.value = [];
-    check_strictly_dept_role.value = [];
+    } else {
+      checked_keys.value = [];
+      check_strictly.value = [];
+      check_strictly_dept_role.value = [];
+    }
   }
-});
+);
+
+watch(
+  () => props.dept_list,
+  (val) => {
+    if (val.length > 0) {
+      nextTick(() => {
+        treeRef.value.expandAll();
+      });
+    }
+  }
+);
 </script>
 
 <style lang="css" scoped>

+ 53 - 27
src/modules/permission/account/index.vue

@@ -26,27 +26,29 @@
         <a-switch v-model="record.status" @change="statusChange(record)" checked-value="1" unchecked-value="0" />
       </template>
       <template #operationSlot="{ record }">
-        <a-popconfirm :content="$t('permission.account.reset_password')" @ok="handleResetPassword(record)">
-          <a-button v-hasPermi="'system:role:resetPassword'" type="text">{{
-            $t('permission.account.reset_password')
+        <div class="operation-btn-container">
+          <a-popconfirm :content="$t('permission.account.reset_password')" @ok="handleResetPassword(record)">
+            <a-button v-hasPermi="'system:role:resetPassword'" type="text">{{
+              $t('permission.account.reset_password')
+            }}</a-button>
+          </a-popconfirm>
+          <a-button v-hasPermi="'system:user:edit'" type="text" @click="handleEdit(record, true)">{{
+            $t('permission.account.edit')
           }}</a-button>
-        </a-popconfirm>
-        <a-button v-hasPermi="'system:user:edit'" type="text" @click="handleEdit(record, true)">{{
-          $t('permission.account.edit')
-        }}</a-button>
-        <a-button v-hasPermi="'system:user:viewPermission'" type="text" @click="handleView(record, true)">{{
-          $t('permission.account.view_permission')
-        }}</a-button>
-        <a-button v-hasPermi="'system:user:deptEdit'" type="text" @click="handleDeptConfig(record, true)">{{
-          $t('permission.account.dept_config')
-        }}</a-button>
-        <a-button
-          v-hasPermi="'system:user:delete'"
-          @click="handleDeleteModal(record.userId, $t('permission.delete_confirm'))"
-          type="text"
-          status="warning"
-          >{{ $t('permission.account.delete') }}</a-button
-        >
+          <a-button v-hasPermi="'system:user:viewPermission'" type="text" @click="handleView(record, true)">{{
+            $t('permission.account.view_permission')
+          }}</a-button>
+          <a-button v-hasPermi="'system:user:deptEdit'" type="text" @click="handleDeptConfig(record, true)">{{
+            $t('permission.account.dept_config')
+          }}</a-button>
+          <a-button
+            v-hasPermi="'system:user:delete'"
+            @click="handleDeleteModal(record.userId, $t('permission.delete_confirm'))"
+            type="text"
+            status="warning"
+            >{{ $t('permission.account.delete') }}</a-button
+          >
+        </div>
       </template>
     </DataTable>
   </a-card>
@@ -88,7 +90,7 @@ import OperateModal from '../../../views/permission/Modal.vue';
 import AccountForm from './AccountForm.vue';
 import ViewPermission from './ViewPermission.vue';
 import DeptConfigModal from './DeptConfigModal.vue';
-import { hasPermission } from '../../../utils/permission';
+import { hasPermission, filterNotEnabledTree } from '../../../utils/permission';
 import {
   QueryUserList,
   QueryUserDeptDetail,
@@ -100,6 +102,7 @@ import {
   ResetPassword,
   DeleteUser
 } from '../../../apis/permission/account';
+import { asycData } from '../../../apis/login.js';
 import { QueryAllRoleList, QueryDeptTree } from '../../../apis/permission/common';
 
 const keywords = ref('');
@@ -108,8 +111,8 @@ const accountForm = ref(null);
 const table_data = ref([]);
 const table_columns = ref([
   { title: '序号', width: 80, fixed: 'left', slotName: 'index' },
-  { title: '用户名', dataIndex: 'userName', width: 150, titleSlotName: 'userName' },
-  { title: '姓名', dataIndex: 'loginName', titleSlotName: 'loginName' },
+  { title: '用户名', dataIndex: 'userName', fixed: 'left', width: 150, titleSlotName: 'userName' },
+  { title: '姓名', dataIndex: 'loginName', width: 100, titleSlotName: 'loginName' },
   {
     title: '角色',
     dataIndex: 'roleName',
@@ -127,9 +130,9 @@ const table_columns = ref([
     titleSlotName: 'deptName'
   },
   { title: '手机号', dataIndex: 'phone', width: 150, titleSlotName: 'phone' },
-  { title: '邮箱', dataIndex: 'email', width: 150, titleSlotName: 'email' },
+  { title: '邮箱', dataIndex: 'email', width: 250, titleSlotName: 'email' },
   { title: '状态', dataIndex: 'status', width: 100, slotName: 'status' },
-  { title: '操作', dataIndex: 'operation', width: 500, fixed: 'right', slotName: 'operationSlot' }
+  { title: '操作', dataIndex: 'operation', width: 350, fixed: 'right', slotName: 'operationSlot' }
 ]);
 const pagination_props = ref({
   total: 10,
@@ -345,19 +348,32 @@ const modalSave = async () => {
           ...edit_form
         };
         const apiCall = is_edit_mode.value ? UpdateUser : AddUser;
-        const { code } = await apiCall(data);
+        const {
+          code,
+          data: { userFlag }
+        } = await apiCall(data);
         if (code === 200) {
           const action = is_edit_mode.value ? '编辑' : '新增';
           Message.success({
             title: `${action}用户`,
             content: `${action}成功`
           });
+
+          // 如果是新增用户,同步数据
+          if (!is_edit_mode.value && userFlag) toAsycData(userFlag);
+
           getUserList();
         }
       }
     });
   }
 };
+
+// 注册后同步数据
+const toAsycData = async (userFlag) => {
+  await asycData(userFlag);
+};
+
 const tableSizeChange = (size) => {
   table_size.value = size;
 };
@@ -382,7 +398,7 @@ const getDeptTree = async () => {
     data: { rows }
   } = await QueryDeptTree();
   if (code == 200) {
-    dept_list.value = rows;
+    dept_list.value = filterNotEnabledTree(rows);
   }
 };
 
@@ -415,4 +431,14 @@ onMounted(() => {
 .account-page-card {
   height: calc(100% - 56px);
 }
+
+.operation-btn-container button {
+  padding: 0;
+}
+.operation-btn-container button:hover {
+  background-color: transparent;
+}
+.operation-btn-container button + button {
+  margin-left: 16px;
+}
 </style>

+ 32 - 20
src/modules/permission/group/index.vue

@@ -24,25 +24,27 @@
       </template>
 
       <template #operationSlot="{ record }">
-        <a-button v-hasPermi="'system:group:edit'" type="text" @click="handleEdit(record, true)">{{
-          $t('permission.group.edit')
-        }}</a-button>
-        <a-button v-hasPermi="'system:group:memberConfig'" type="text" @click="handleMembertConfig(record, true)">{{
-          $t('permission.group.member_management')
-        }}</a-button>
-        <a-button
-          v-hasPermi="'system:group:permissionConfig'"
-          type="text"
-          @click="handlePermissionConfig(record, true)"
-          >{{ $t('permission.group.permission_management') }}</a-button
-        >
-        <a-button
-          v-hasPermi="'system:group:delete'"
-          @click="handleDeleteModal(record.groupId, $t('permission.delete_confirm'))"
-          type="text"
-          status="warning"
-          >{{ $t('permission.group.delete') }}</a-button
-        >
+        <div class="operation-btn-container">
+          <a-button v-hasPermi="'system:group:edit'" type="text" @click="handleEdit(record, true)">{{
+            $t('permission.group.edit')
+          }}</a-button>
+          <a-button v-hasPermi="'system:group:memberConfig'" type="text" @click="handleMembertConfig(record, true)">{{
+            $t('permission.group.member_management')
+          }}</a-button>
+          <a-button
+            v-hasPermi="'system:group:permissionConfig'"
+            type="text"
+            @click="handlePermissionConfig(record, true)"
+            >{{ $t('permission.group.permission_management') }}</a-button
+          >
+          <a-button
+            v-hasPermi="'system:group:delete'"
+            @click="handleDeleteModal(record.groupId, $t('permission.delete_confirm'))"
+            type="text"
+            status="warning"
+            >{{ $t('permission.group.delete') }}</a-button
+          >
+        </div>
       </template>
     </DataTable>
   </a-card>
@@ -112,7 +114,7 @@ const table_columns = ref([
   { title: t('permission.group.groupName'), dataIndex: 'groupName', width: 150, titleSlotName: 'groupName' },
   { title: t('permission.group.description'), dataIndex: 'description', tooltip: true, titleSlotName: 'description' },
   { title: t('permission.group.status'), dataIndex: 'status', slotName: 'status' },
-  { title: t('permission.group.action'), dataIndex: 'operation', width: 400, fixed: 'right', slotName: 'operationSlot' }
+  { title: t('permission.group.action'), dataIndex: 'operation', width: 300, fixed: 'right', slotName: 'operationSlot' }
 ]);
 const pagination_props = ref({
   total: 10,
@@ -379,4 +381,14 @@ onMounted(() => {
 .arco-modal-simple .arco-modal-footer {
   margin-top: 0;
 }
+
+.operation-btn-container button {
+  padding: 0;
+}
+.operation-btn-container button:hover {
+  background-color: transparent;
+}
+.operation-btn-container button + button {
+  margin-left: 16px;
+}
 </style>

+ 1 - 6
src/modules/permission/role/DeptConfigModal.vue

@@ -6,13 +6,12 @@
     @cancel="handleCancel"
     @ok="editDeptHandleOk"
   >
-    <div :style="{ display: 'flex' }">
+    <div style="display: flex">
       <a-card class="card-body" :title="$t('permission.role.organization')" hoverable>
         <a-tree
           :data="dept_list"
           ref="treeRef"
           v-model:checked-keys="checked_keys"
-          v-model:expanded-keys="expand_keys"
           :checkable="true"
           :check-strictly="true"
           :show-line="true"
@@ -59,8 +58,6 @@ const treeRef = ref(null);
 
 // 组件内部状态
 const checked_keys = ref([]);
-// 默认展开第一节
-const expand_keys = ref(['0']);
 const check_strictly = ref([]);
 
 // 递归取消所有子节点的选择
@@ -116,12 +113,10 @@ watch(
           deptName: val.deptName
         });
         checked_keys.value.push(val.deptId);
-        expand_keys.value.push(val.deptId);
       });
     } else {
       check_strictly.value = [];
       checked_keys.value = [];
-      expand_keys.value = ['0'];
     }
   }
 );

+ 35 - 20
src/modules/permission/role/index.vue

@@ -23,23 +23,28 @@
         <a-switch v-model="record.status" @change="statusChange(record)" checked-value="1" unchecked-value="0" />
       </template>
       <template #operationSlot="{ record }">
-        <a-button v-hasPermi="'system:role:edit'" type="text" @click="handleEdit(record, true)">{{
-          $t('permission.role.edit')
-        }}</a-button>
-        <a-button v-hasPermi="'system:role:permissionEdit'" type="text" @click="handlePermissionConfig(record, true)">{{
-          $t('permission.role.permissionEdit')
-        }}</a-button>
-        <a-button v-hasPermi="'system:role:deptEdit'" type="text" @click="handleDeptConfig(record, true)">{{
-          $t('permission.role.deptEdit')
-        }}</a-button>
+        <div class="operation-btn-container">
+          <a-button v-hasPermi="'system:role:edit'" type="text" @click="handleEdit(record, true)">{{
+            $t('permission.role.edit')
+          }}</a-button>
+          <a-button
+            v-hasPermi="'system:role:permissionEdit'"
+            type="text"
+            @click="handlePermissionConfig(record, true)"
+            >{{ $t('permission.role.permissionEdit') }}</a-button
+          >
+          <a-button v-hasPermi="'system:role:deptEdit'" type="text" @click="handleDeptConfig(record, true)">{{
+            $t('permission.role.deptEdit')
+          }}</a-button>
 
-        <a-button
-          v-hasPermi="'system:role:delete'"
-          @click="handleDeleteModal(record.roleId, $t('permission.delete_confirm'))"
-          type="text"
-          status="warning"
-          >{{ $t('permission.role.delete') }}</a-button
-        >
+          <a-button
+            v-hasPermi="'system:role:delete'"
+            @click="handleDeleteModal(record.roleId, $t('permission.delete_confirm'))"
+            type="text"
+            status="warning"
+            >{{ $t('permission.role.delete') }}</a-button
+          >
+        </div>
       </template>
     </DataTable>
   </a-card>
@@ -79,7 +84,7 @@ import OperateModal from '../../../views/permission/Modal.vue';
 import RoleForm from './RoleForm.vue';
 import PermissionConfigModal from './PermissionConfigModal.vue';
 import DeptConfigModal from './DeptConfigModal.vue';
-import { hasPermission } from '../../../utils/permission';
+import { hasPermission, filterNotEnabledTree } from '../../../utils/permission';
 import { QueryRoleList, RoleStatusSwitch, DeleteRole, CreateRole, UpdateRole } from '../../../apis/permission/role';
 import { QueryResourceTree } from '../../../apis/permission/resource';
 import { QueryDeptTree } from '../../../apis/permission/common';
@@ -92,7 +97,7 @@ const table_columns = ref([
   { title: '序号', width: 80, slotName: 'index' },
   { title: '角色名', dataIndex: 'roleName', width: 600, titleSlotName: 'roleName' },
   { title: '状态', dataIndex: 'status', slotName: 'status' },
-  { title: '操作', dataIndex: 'operation', width: 400, fixed: 'right', slotName: 'operationSlot' }
+  { title: '操作', dataIndex: 'operation', width: 300, fixed: 'right', slotName: 'operationSlot' }
 ]);
 const pagination_props = ref({
   total: 10,
@@ -290,7 +295,7 @@ const getMenuTree = async () => {
     data: { rows }
   } = await QueryResourceTree();
   if (code === 200) {
-    menu_list.value = rows;
+    menu_list.value = filterNotEnabledTree(rows);
   }
 };
 // 获取部门树
@@ -300,7 +305,7 @@ const getDeptTree = async () => {
     data: { rows }
   } = await QueryDeptTree();
   if (code == 200) {
-    dept_list.value = rows;
+    dept_list.value = filterNotEnabledTree(rows);
   }
 };
 
@@ -334,4 +339,14 @@ onMounted(() => {
 .role-page-card {
   height: calc(100% - 56px);
 }
+
+.operation-btn-container button {
+  padding: 0;
+}
+.operation-btn-container button:hover {
+  background-color: transparent;
+}
+.operation-btn-container button + button {
+  margin-left: 16px;
+}
 </style>

+ 10 - 0
src/utils/permission.js

@@ -92,3 +92,13 @@ export const initializeRoutes = () => {
   accessFlatRoutes = flattenRoutes(accessRoutes);
   return { accessRoutes, accessFlatRoutes };
 };
+
+// 递归过滤未启用的节点
+export const filterNotEnabledTree = (nodes) => {
+  return nodes
+    .filter((node) => node.status === '1')
+    .map((node) => ({
+      ...node,
+      children: node.children ? filterNotEnabledTree(node.children) : []
+    }));
+};

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů