Files
zyt/server/public/admin/assets/index-B-4Yu01u.js
T
2026-10-17 16:57:45 +08:00

2 lines
5.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{o as $,q as o,r as A,ac as K,bn as z,O as c,D as n,s as u,v as m,bo as H,L as k,P as _,bd as J,bb as Q,bh as R,F as O,G as P,bi as W,K as X,T as B,bj as Y,M as f,aC as N,p as S}from"./.pnpm-CyuAWpdG.js";import{_ as Z}from"./index-DIl3M8Wa.js";import{r as V,j as ee}from"./index-Bkarz3gO.js";function F(p){const l=p,t=d=>Array.isArray(d)&&d.every(b=>Number.isSafeInteger(b)&&b>0);if(!l||!t(l.role_ids)||!t(l.admin_ids))throw new Error("可见范围配置响应格式不正确");return{role_ids:[...l.role_ids],admin_ids:[...l.admin_ids]}}async function le(){const p=await V.get({url:"/tcm.prescriptionAi/getVisibilityConfig"});return F(p)}async function ae(p){const l=await V.post({url:"/tcm.prescriptionAi/setVisibilityConfig",params:p});return F(l)}function ie(){return V.get({url:"/tcm.prescriptionAi/visibilityOptions"})}function se(){return V.get({url:"/tcm.prescriptionAi/capabilities"})}const te={class:"prescription-ai-visibility"},oe={key:1,role:"status",class:"mb-5"},ne={class:"w-full max-w-[640px]"},re={class:"w-full max-w-[640px]"},de=$({name:"prescriptionAiVisibility"}),fe=$({...de,setup(p){const l=f(!1),t=f(!1),d=f(!1),b=f(!1),g=f(!1),v=f(""),y=f(""),i=N({role_ids:[],admin_ids:[]}),w=N({roles:[],admins:[]}),L=S(()=>{const a=new Map(w.roles.map(e=>[e.id,e]));for(const e of i.role_ids)a.has(e)||a.set(e,{id:e,name:`已配置角色 #${e}(当前不在可选列表)`});return[...a.values()]}),M=S(()=>{const a=new Map(w.admins.map(e=>[e.id,{id:e.id,label:`${e.name||`用户 #${e.id}`}(${e.account})`}]));for(const e of i.admin_ids)a.has(e)||a.set(e,{id:e,label:`已配置用户 #${e}(当前不在可选列表)`});return[...a.values()]}),x=a=>{i.role_ids=[...a.role_ids],i.admin_ids=[...a.admin_ids]},E=async()=>{if(!(l.value||t.value)){l.value=!0,d.value=!1,g.value=!1,v.value="",y.value="";try{if((await se()).can_manage_visibility!==!0){v.value="当前账号无权管理处方 AI 一致度可见范围。";return}g.value=!0;const[e,s]=await Promise.all([le(),ie()]);if(!Array.isArray(s==null?void 0:s.roles)||!Array.isArray(s==null?void 0:s.admins))throw new Error("可选用户组或用户响应格式不正确");x(e),w.roles=s.roles,w.admins=s.admins,b.value=!0,d.value=!0}catch{v.value="可见范围加载失败,尚未读取完整配置。请重试加载后再保存。"}finally{l.value=!1}}},j=async()=>{if(!(!d.value||!g.value||l.value||t.value)){t.value=!0,y.value="";try{const a=await ae({role_ids:[...i.role_ids],admin_ids:[...i.admin_ids]});x(a),ee.msgSuccess("可见范围已保存")}catch{y.value="保存结果未确认,当前选择已保留。请重试保存,或重新加载以确认服务端策略。"}finally{t.value=!1}}};return E(),(a,e)=>{const s=H,h=W,I=R,C=Q,q=J,D=X,T=Y,U=Z,G=z;return o(),A("div",te,[K((o(),c(T,{shadow:"never",class:"!border-none"},{default:n(()=>[e[7]||(e[7]=u("div",{class:"text-xl font-medium mb-[20px]"},"处方 AI 一致度可见范围",-1)),m(s,{type:"info",closable:!1,"show-icon":"",class:"mb-5"},{title:n(()=>[...e[2]||(e[2]=[k("指定用户组或用户可查看一致度",-1)])]),default:n(()=>[e[3]||(e[3]=u("div",{class:"leading-6"}," 用户命中任一指定系统角色,或被单独指定,即可查看桌面端“与 AI 一致度”、逐味对照和一致度统计。AI 报告继续按原有权限开放,已有报告不受影响,患者与处方的数据范围保持原有规则。 ",-1))]),_:1}),v.value?(o(),c(s,{key:0,title:v.value,type:"error",closable:!1,"show-icon":"",class:"mb-5"},null,8,["title"])):_("",!0),l.value?(o(),A("div",oe,"正在读取当前可见范围…")):_("",!0),b.value?(o(),c(q,{key:2,class:"ls-form",model:i,disabled:!d.value||l.value||t.value,"label-width":"140px"},{default:n(()=>[m(C,{label:"指定用户组",prop:"role_ids"},{default:n(()=>[u("div",ne,[m(I,{modelValue:i.role_ids,"onUpdate:modelValue":e[0]||(e[0]=r=>i.role_ids=r),class:"w-full",multiple:"",filterable:"",clearable:"",placeholder:"请选择系统角色,可搜索角色名称"},{default:n(()=>[(o(!0),A(O,null,P(L.value,r=>(o(),c(h,{key:r.id,label:r.name,value:r.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e[4]||(e[4]=u("div",{class:"form-tips"},"账号拥有任一指定角色即可命中。",-1))])]),_:1}),m(C,{label:"指定用户",prop:"admin_ids"},{default:n(()=>[u("div",re,[m(I,{modelValue:i.admin_ids,"onUpdate:modelValue":e[1]||(e[1]=r=>i.admin_ids=r),class:"w-full",multiple:"",filterable:"",clearable:"",placeholder:"请选择用户,可搜索姓名或账号"},{default:n(()=>[(o(!0),A(O,null,P(M.value,r=>(o(),c(h,{key:r.id,label:r.label,value:r.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e[5]||(e[5]=u("div",{class:"form-tips"}," 单独指定的用户无需同时命中用户组。当前不在可选列表中的已配置 ID 会保留,移除后保存才会取消该项授权。 ",-1))])]),_:1}),m(C,{label:"生效规则"},{default:n(()=>[...e[6]||(e[6]=[u("div",null,[u("div",{class:"leading-6"},"指定用户组与指定用户按“或”生效。"),u("div",{class:"form-tips"}," 两项均为空时,所有账号(包括超级管理员)均隐藏一致度、对照与统计。 拥有本页管理权限不自动获得一致度查看权,超级管理员也需命中上述名单。 ")],-1)])]),_:1})]),_:1},8,["model","disabled"])):_("",!0),d.value&&!i.role_ids.length&&!i.admin_ids.length?(o(),c(s,{key:3,title:"当前选择为空:保存后所有账号将隐藏一致度、对照与统计,AI 报告仍保留。",type:"warning",closable:!1,"show-icon":"",class:"mb-5"})):_("",!0),y.value?(o(),c(s,{key:4,title:y.value,type:"error",closable:!1,"show-icon":"",class:"mb-5"},null,8,["title"])):_("",!0),m(D,{disabled:l.value||t.value,onClick:E},{default:n(()=>[k(B(v.value?"重试加载":"重新加载"),1)]),_:1},8,["disabled"])]),_:1})),[[G,l.value]]),g.value?(o(),c(U,{key:0},{default:n(()=>[m(D,{type:"primary",loading:t.value,disabled:!d.value||l.value||t.value,onClick:j},{default:n(()=>[k(B(t.value?"正在保存":"保存"),1)]),_:1},8,["loading","disabled"])]),_:1})):_("",!0)])}}});export{fe as default};