Files
zyt/server/public/admin/assets/FollowupAudioPanel-CHS6LBA_.js
T
2026-10-15 12:00:09 +08:00

2 lines
40 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{i as Za,R as Xa,N as el,O as al,P as ll,K as tl,L as il,ah as ul,ai as nl,B as sl,G as ol,F as rl,z as vl,a1 as cl,E as P,a as Fe}from"./element-plus-DDINy080.js";import{r as Xe,_ as dl}from"./index-CucNzNKR.js";import fl from"./FollowupAudioReview-Cv2ObmWa.js";import{c as pl,f as Na,a as yl,r as ya,b as ma,d as ml,e as gl,g as ue,u as _l,h as bl,i as Ze,j as Va,n as $e,k as wl,l as kl,m as hl,o as Cl,p as xl,q as Al,s as Sl,t as El,v as Rl,w as Tl,x as Il,y as Ol}from"./FollowupAudioField-D4JqpESK.js";import{f as Ul,w as ga,b as Ll,ae as Nl,ak as i,I as f,J as m,G as R,aN as p,O as S,a as _,H as d,F as Me,ap as Pe,A as I,n as Vl}from"./@vue/runtime-core-C6bnekPw.js";import{n as b,y as Q}from"./@vue/reactivity-DiY1c2vO.js";import{Q as v}from"./@vue/shared-mAAVTE9n.js";class Je extends Error{constructor(c,h=""){super(c),this.code=h,this.name="FollowupAudioError"}}const ea={isTransformResponse:!1,ignoreCancelToken:!0,isOpenRetry:!1,retryCount:0},aa="/tcm.followupAudio/";function la(u){if(u.code!==1){const c=u.data,h=c&&typeof c=="object"&&"code"in c?String(c.code):"";throw new Je(u.msg||"回访录音请求失败,请刷新任务状态后确认",h)}return u.data}async function _a(u,c,h){return la(await Xe.get({url:aa+u,params:c,signal:h},ea))}async function ne(u,c,h){return la(await Xe.post({url:aa+u,data:c,signal:h,timeout:12e4},ea))}const ai=(u,c)=>_a("capabilities",{diagnosis_id:u},c),Dl=(u,c)=>_a("lists",{diagnosis_id:u},c),Bl=(u,c)=>_a("detail",{id:u},c),Fl=(u,c)=>ne("uploadSession",u,c);async function $l(u,c,h,n){const L=new FormData;return L.append("upload_id",u),L.append("index",String(c)),L.append("file",h,`chunk-${c}`),la(await Xe.post({url:aa+"uploadChunk",data:L,signal:n,timeout:12e4,headers:{"Content-Type":"multipart/form-data"}},ea))}const Ml=(u,c)=>ne("uploadComplete",{upload_id:u},c),Pl=(u,c)=>ne("create",u,c),Jl=(u,c)=>ne("saveDraft",u,c),zl=(u,c)=>ne("apply",u,c),Wl=(u,c)=>ne("reextract",u,c),ql=(u,c)=>ne("delete",u,c),jl=(u,c)=>ne("retry",{id:u},c);async function Kl(u,c){const h=await Xe.get({url:aa+"audio",params:{id:u},responseType:"blob",signal:c,timeout:12e4},ea);if(h.type.includes("json")){const n=JSON.parse(await h.text());throw la(n),new Je("录音响应不是音频文件")}return h}function Yl(){const u=globalThis,c=u.AudioContext||u.webkitAudioContext;return c?new c:null}function Hl(u,c=Yl){let h=null,n=null,L=null,U=null,l=!1,w=0;function C(){n==null||n.disconnect(),L==null||L.disconnect(),U==null||U.disconnect()}return{async select(V){if(l)return!1;const D=++w;if(u.pause(),V==="original"&&!h)return!0;try{if(!h){if(h=c(),!h)throw new Error("当前浏览器不支持 Web Audio,无法隔离声道;请使用原音播放。");n=h.createMediaElementSource(u),L=h.createChannelSplitter(2),U=h.createChannelMerger(2)}if(!n)throw new Error("音频播放节点未就绪");if(C(),V==="original")n.connect(h.destination);else{if(!L||!U)throw new Error("声道播放节点未就绪");n.connect(L),L.connect(U,V,0),L.connect(U,V,1),U.connect(h.destination)}if(await h.resume(),!l&&D===w&&h.state!=="running")throw new Error("音频上下文未运行");return!l&&D===w}catch(Z){if(l||D!==w)return!1;throw C(),n&&h&&n.connect(h.destination),new Error(`无法隔离声道,已停止本次回听;可选择原音播放。${Z instanceof Error?Z.message:""}`)}},dispose(){l||(l=!0,w++,u.pause(),C(),h&&h.close().catch(()=>{}))}}}const Gl={key:0,class:"followup-panel","aria-label":"回访录音"},Ql={class:"panel-toolbar"},Zl={class:"toolbar-title"},Xl={key:1},et={class:"toolbar-actions"},at={key:0,class:"help-box"},lt={key:0},tt={key:1},it={key:2},ut={key:7,class:"task-list"},nt={class:"task-time"},st={key:0,class:"task-time"},ot={key:8,class:"detail-loading",role:"status"},rt={key:9,class:"task-detail","aria-label":"录音任务详情"},vt={class:"detail-heading"},ct={class:"recording-title"},dt={class:"detail-actions"},ft={key:0,class:"processing-state",role:"status"},pt={class:"summary-box"},yt={class:"summary-counts"},mt={key:7,class:"channel-role-box","aria-label":"声道角色人工标注"},gt={key:0,class:"role-summary"},_t={key:1},bt={key:2,class:"muted"},wt={key:3,class:"muted"},kt={key:4,class:"review-error",role:"status"},ht={key:8,class:"role-reextract","aria-label":"角色纠错与重新提炼"},Ct={key:0},xt={key:1},At={key:9,class:"muted"},St={class:"audio-player"},Et={key:1,class:"muted"},Rt=["src"],Tt={key:0,class:"channel-playback","aria-label":"声道回听"},It={class:"muted",role:"status"},Ot={key:1,class:"review-error",role:"alert"},Ut={key:2,class:"muted"},Lt={key:0,class:"transcript-segments"},Nt={class:"segment-heading"},Vt={class:"dialogue-sides"},Dt={key:1,class:"transcript-text"},Bt={key:10,class:"review-actions"},Ft={class:"selection-summary"},$t={key:0,class:"action-buttons"},Mt={key:1,class:"review-error",role:"alert"},Pt={key:11,class:"applied-note"},Jt=["disabled"],zt={key:3,class:"upload-stage",role:"status"},Wt={class:"muted"},qt=Ul({__name:"FollowupAudioPanel",props:{diagnosisId:{},viewOnly:{type:Boolean,default:!1},active:{type:Boolean,default:!0},capabilities:{},basicDirty:{type:Boolean,default:!1},beforeApply:{}},emits:["applied"],setup(u,{expose:c,emit:h}){var Ta;const n=u,L=h,U=b([]),l=b(null),w=b([]),C=b(0),V=b("[]"),D=b("unconfirmed"),Z=b("unconfirmed"),pe=b(!1),T=b("idle"),ta=b(0),ye=I(()=>K.value||JSON.stringify(w.value)!==V.value),Da=I(()=>{var a;return T.value==="saving"?"正在自动保存…":T.value==="error"?"保存失败,修改仍保留;请重试保存":T.value==="conflict"?"自动保存已暂停;请重新核对后重试保存":ye.value?"等待自动保存…":(a=Se.value)!=null&&a.hasUnsavedChanges()?"当前单项尚未完成核对":T.value==="saved"?"审核草稿已自动保存":"草稿已同步"}),K=I(()=>D.value!==Z.value),J=I(()=>{var a;return $e((a=l.value)==null?void 0:a.channel_roles)}),ia=I(()=>{var a;return[...((a=l.value)==null?void 0:a.transcript_segments)||[]].sort((e,t)=>e.start_ms-t.start_ms||(e.channel??-1)-(t.channel??-1))}),Ba=I(()=>kl(ia.value)),me=I(()=>hl(ia.value)),Se=b(null),ae=I(()=>{var a;return K.value||JSON.stringify(w.value)!==V.value||!!((a=Se.value)!=null&&a.hasUnsavedChanges())}),ge=b(!1),Ee=b(!1),Y=b([]),le=b(null),ua=b(null),Re=b(""),_e=b("unconfirmed"),be=b(((Ta=n.capabilities.models[0])==null?void 0:Ta.value)||""),ze=b(!1),z=b(!1),We=b(0),q=b(""),$=b(!1),O=b(""),x=b(""),j=b(""),Te=b(null),we=b(!1),X=b("original"),ke=b(!1),se=b(""),ba=b(typeof document>"u"||document.visibilityState!=="hidden"),A=I(()=>z.value||!!O.value),oe=I(()=>Cl(n.capabilities)),te=I(()=>{var a;return!!n.capabilities.preview_only||!!((a=l.value)!=null&&a.preview_only)}),wa=I(()=>xl(n.capabilities)),W=I(()=>!n.viewOnly&&oe.value&&wa.value&&n.capabilities.can_upload&&n.capabilities.models.length>0),re=I(()=>{var a,e;return!n.viewOnly&&Al(n.capabilities,!!((a=l.value)!=null&&a.preview_only))&&((e=l.value)==null?void 0:e.status)==="review"}),qe=I(()=>{var a,e;return!n.viewOnly&&Sl(n.capabilities,!!((a=l.value)!=null&&a.preview_only))&&((e=l.value)==null?void 0:e.status)==="review"}),he=I(()=>{var a;return $e((a=l.value)==null?void 0:a.extraction_channel_roles)}),Ie=I(()=>{var a,e;return J.value!=="unconfirmed"&&J.value!==he.value?J.value:$e((e=(a=l.value)==null?void 0:a.role_check)==null?void 0:e.suggested_roles)}),na=I(()=>{var a,e;return!n.viewOnly&&oe.value&&((a=l.value)==null?void 0:a.status)==="review"&&((e=l.value)==null?void 0:e.can_reextract)===!0}),Ce=I(()=>w.value.filter(a=>a.selected).length),Fa=I(()=>{var a;return w.value.filter(e=>{var t;return El(e,((t=l.value)==null?void 0:t.fields)||n.capabilities.fields,n.capabilities.can_daily)}).length+(((a=l.value)==null?void 0:a.uncertainties.length)||0)}),ve=I(()=>{var a,e;return te.value?"测试预览仅保存审核草稿,不允许确认写入病历":T.value==="conflict"?"记录版本已变化,请重新核对后重试保存草稿":T.value==="error"?"草稿保存失败,请重试保存成功后再确认写入":T.value==="saving"||ye.value?"审核草稿尚未保存完成,请稍候再确认写入":K.value?"声道角色标注尚未保存,请先保存草稿并重新核对建议":me.value&&J.value==="unconfirmed"?"请先回听并确认声道角色,保存草稿后重新核对建议":Rl(w.value,((a=l.value)==null?void 0:a.items)||[])?"写入目标或记录日期已更改,请先保存审核草稿取得新快照,再核对并采纳":Tl(w.value,((e=l.value)==null?void 0:e.fields)||n.capabilities.fields)||w.value.map(t=>{var o;return Il(t,((o=l.value)==null?void 0:o.fields)||n.capabilities.fields)||Ol(t,n.capabilities.can_daily)}).find(Boolean)||""}),Oe=I(()=>n.active&&oe.value&&ba.value),r=pl();let je,Ue,H=!1,Le=null,Ke=!1,Ne=0,ce=0,ee=null,sa=null,ka=0;function ie(){je!==void 0&&clearTimeout(je),je=void 0}function Ye(){var a;Ne++,ce++,ee==null||ee.dispose(),ee=null,sa=null,(a=Te.value)==null||a.pause(),j.value&&URL.revokeObjectURL(j.value),j.value="",we.value=!1,ke.value=!1,X.value="original",se.value=""}function xe(){r.invalidate(),ie(),de(),Ye(),Le=null,T.value==="saving"&&(T.value="error",x.value="保存结果尚未确认;修改仍保留,请刷新核对版本后重试保存。"),ze.value=!1,z.value=!1,O.value="",Ke=!1}function oa(a,e,t=e){e=e&&a.status==="review";const o=t&&K.value&&a.status==="review";a.audio_available||Ye(),ya(a)&&(!l.value||l.value.status!==a.status||!l.value.transcript_available)&&(Y.value.includes("original")||(Y.value=[...Y.value,"original"])),H=!0;try{l.value=a;const g=e?Va(w.value,a.items):Ze(a.items);JSON.stringify(g)!==JSON.stringify(w.value)&&(w.value=g),V.value=JSON.stringify(a.items),Z.value=$e(a.channel_roles),o||(D.value=Z.value)}finally{H=!1}}function Ve(){H=!0,D.value="unconfirmed",Z.value="unconfirmed",H=!1,pe.value=!1,T.value="idle",ta.value=0}function $a(a){!re.value||A.value&&O.value!=="save"||!me.value||!["unconfirmed","left_service","right_service"].includes(String(a))||(D.value=a)}function ha(a){return a instanceof Je&&(a.code==="FOLLOWUP_AUDIO_TASK_UNAVAILABLE"||a.message.includes("FOLLOWUP_AUDIO_TASK_UNAVAILABLE"))}function Ca(a){C.value===a&&(xe(),Ve(),C.value=0,l.value=null,w.value=[],V.value="[]",Y.value=[],U.value=U.value.filter(e=>e.id!==a),x.value="录音已删除或不再可访问,已关闭本页缓存与播放;未写入病例。",M())}async function Ae(a,e=!1,t=!1){var E;const o=r.capture();let g;try{g=await Bl(a,o.signal)}catch(k){if(r.current(o)&&a===C.value&&ha(k)){Ca(a);return}throw k}if(t&&l.value&&g.version===l.value.version&&g.status===l.value.status||!r.current(o)||a!==C.value||l.value&&g.version<l.value.version)return;e=e||!!l.value&&ae.value;const y=((E=l.value)==null?void 0:E.status)==="review"&&g.status==="applied";oa(g,e),y&&!te.value&&L("applied",n.diagnosisId),e&&g.status==="review"?(de(),T.value="conflict",x.value="服务端记录或版本已变化;已保留你的字段与日期修改,并取消所有选择。自动保存已暂停,请重新核对后重试保存草稿。"):e&&y&&(x.value="任务已由其他人确认,已显示实际写入结果;本页未保存的修改未写入。")}async function M(){if(!Oe.value||!n.diagnosisId||Ke||A.value)return;const a=r.capture();Ke=!0,ze.value=!0,ie();try{const e=await Dl(n.diagnosisId,a.signal);if(!r.current(a))return;U.value=e.items;const t=U.value.find(o=>o.id===C.value);t&&(!l.value||t.version>l.value.version||t.version>=l.value.version&&t.status!==l.value.status||t.status==="running")?await Ae(t.id,ae.value):!t&&C.value&&l.value&&await Ae(C.value,!1,!0)}catch(e){r.current(a)&&(x.value=ue(e))}finally{r.current(a)&&(Ke=!1,ze.value=!1,Oe.value&&(je=setTimeout(()=>{M()},5e3)))}}async function ra(){if(A.value)return P.warning("正在上传或提交审核,请等待本次操作结束"),!1;if(!ae.value)return!0;try{return await Fe.confirm("审核修改尚未保存。关闭诊单或切换录音将丢失这些修改,是否继续?","保留审核修改",{type:"warning",confirmButtonText:"继续离开",cancelButtonText:"返回保存"}),!0}catch{return!1}}async function va(a){if(!oe.value||a===C.value||A.value)return;const e=r.capture();if(!await ra()||!r.current(e))return;xe(),Ve(),C.value=a,l.value=null,w.value=[],V.value="[]",x.value="",Y.value=[];const t=r.capture();try{await Ae(a)}catch(o){r.current(t)&&(x.value=ue(o))}r.current(t)&&await M()}async function Ma(){const a=r.capture();!await ra()||!r.current(a)||(xe(),Ve(),C.value=0,l.value=null,w.value=[],V.value="[]",Y.value=[],x.value="",await M())}function Pa(){!W.value||A.value||$.value||(le.value||(_e.value="unconfirmed"),ge.value=!0)}function xa(a){z.value||(ge.value=!1,a==null||a())}function Aa(a){return a==="failed"||a==="needs_reconciliation"?"danger":a==="applied"?"success":a==="review"?"warning":"info"}function Ja(a){var t;const e=((t=a.target.files)==null?void 0:t[0])||null;e&&(le.value&&e!==le.value&&(_e.value="unconfirmed",P.warning("录音已更换,请重新核对本次录音的声道角色")),le.value=e,We.value=0,q.value="")}async function za(){if(A.value||$.value)return;const a=_l(le.value,Re.value,be.value,n.capabilities,n.viewOnly);if(a){P.warning(a);return}const e=le.value;if(!e)return;const t=r.capture();z.value=!0,We.value=0,x.value="",ie();let o=!1;try{q.value="正在创建私有上传会话";const g=await Fl({diagnosis_id:n.diagnosisId,file_name:e.name,total_bytes:e.size},t.signal);if(!r.current(t)||!W.value||(q.value="正在上传录音分片",!await bl(e,g.chunk_bytes,(k,B)=>$l(g.upload_id,k,B,t.signal),()=>r.current(t)&&W.value,k=>{We.value=k}))||(q.value="正在校验录音时长和完整性",await Ml(g.upload_id,t.signal),!r.current(t)||!W.value))return;q.value="正在创建分析任务",o=!0,$.value=!0;const E=await Pl({diagnosis_id:n.diagnosisId,upload_id:g.upload_id,recorded_at:Re.value,model_key:be.value,channel_roles:_e.value},t.signal);if(!r.current(t))return;$.value=!1,z.value=!1,ge.value=!1,le.value=null,ua.value&&(ua.value.value=""),q.value=E.reused?E.reuse_message||"同一录音已有任务,已打开原任务,不会重复调用模型":n.capabilities.preview_only?"测试任务已创建,后台将识别与提炼;此任务不允许写入业务记录":"任务已创建,后台将进行分析;审核前不会写入业务记录",E.reused&&P.warning(q.value),await va(E.task_id)}catch(g){r.current(t)&&(x.value=ue(g),$.value=o&&!(g instanceof Je),q.value="本次操作已停止,未自动重试")}finally{r.current(t)&&(z.value=!1,await M())}}async function ca(a){const e=r.capture();if(ha(a)&&l.value){Ca(l.value.id);return}if(x.value=ue(a),a instanceof Je&&a.code==="FOLLOWUP_AUDIO_STALE_REVIEW"||/STALE_REVIEW|版本|快照|已变化/.test(x.value)){de(),T.value="conflict";try{await Ae(C.value,!0)}catch{r.current(e)&&(x.value+=";刷新失败,当前编辑仍已保留,请稍后刷新。")}}}function de(){Ue!==void 0&&clearTimeout(Ue),Ue=void 0}function De(){de(),!(H||!Oe.value||!re.value||!ye.value||["error","conflict"].includes(T.value))&&O.value!=="save"&&(T.value="pending",Ue=setTimeout(()=>{Ue=void 0,da(!0)},650))}function Wa(a,e,t){const o=new Map(a.map(y=>[y.id,y])),g=new Map(t.map(y=>[y.id,y]));return Ze(e).map(y=>{const E=o.get(y.id),k=g.get(y.id);if(!E||!k)return y;const B=y.needs_review&&!E.needs_review||E.selected&&!y.selected;for(const N of["values","record_date","record_time","time_period","target_id","selected","needs_review"])B&&(N==="selected"||N==="needs_review")||JSON.stringify(E[N])!==JSON.stringify(k[N])&&Object.assign(y,{[N]:k[N]});return y})}async function da(a=!1){var Be;if(Le)return Le;if(!re.value||!l.value||A.value||!Oe.value)return;if(!a&&((Be=Se.value)!=null&&Be.hasUnsavedChanges())){P.warning("请先保存或取消正在核对的单项修改");return}if(a&&(!ye.value||["error","conflict"].includes(T.value)))return;de();const e=r.capture(),t=l.value.id,o=n.diagnosisId,g=()=>r.current(e)&&C.value===t&&n.diagnosisId===o,y=K.value,E=D.value,k=Ze(w.value),B=l.value.version;O.value="save",T.value="saving",x.value="",ie();const N=(async()=>{try{const F=await Jl({id:t,version:B,items:k,...y&&me.value?{channel_roles:E}:{}},e.signal);if(!g())return;if(l.value&&F.version<l.value.version){T.value="conflict",x.value="服务端已有更新版本;自动保存已暂停,请核对当前记录后重试保存。";return}if(F.review_refreshed){const fe=D.value;oa(F,!0,!1),fe!==E&&(H=!0,D.value=fe,H=!1),T.value="conflict",x.value="业务记录已变化,版本已刷新;当前编辑已保留,全部选择已取消。自动保存已暂停,请重新核对后重试保存草稿。"}else{const fe=D.value,Qe=y?Va(w.value,F.items):Wa(k,F.items,w.value);H=!0;try{l.value=F,V.value=JSON.stringify(F.items),Z.value=$e(F.channel_roles),D.value=fe===E?Z.value:fe,JSON.stringify(Qe)!==JSON.stringify(w.value)&&(w.value=Qe)}finally{H=!1}pe.value=K.value,T.value=ye.value?"pending":"saved",ye.value||ta.value++,a||P.success(y?"角色标注已保存,全部建议须重新核对;不会自动重新提炼":te.value?"测试审核草稿已保存,不会写入病历":"审核草稿已保存,尚未写入病历")}}catch(F){g()&&(T.value="error",await ca(F),g()&&!["conflict"].includes(T.value)&&(x.value+=";自动保存已暂停,修改仍保留,请重试保存草稿。"))}finally{g()&&(O.value="",Le=null,De(),await M())}})();return Le=N,N}async function qa(){var t;if(!qe.value||!l.value||A.value||!Ce.value)return;if((t=Se.value)!=null&&t.hasUnsavedChanges()){P.warning("请先保存或取消正在核对的单项修改");return}if(n.basicDirty||n.beforeApply&&!n.beforeApply()){P.warning("请先保存病历表单,当前修改不会被覆盖");return}if(ve.value){P.warning(ve.value);return}const a=r.capture();try{await Fe.confirm(`将一次性采纳 ${Ce.value} 项;任一项冲突则整批不写入。确认已核对原话、日期和时间?`,"确认采纳",{type:"warning",confirmButtonText:"全部采纳",cancelButtonText:"返回核对"})}catch{return}if(!r.current(a)||!qe.value||!Ce.value||n.basicDirty||n.beforeApply&&!n.beforeApply()||!l.value)return;if(ve.value){P.warning(ve.value);return}const e=n.diagnosisId;O.value="apply",x.value="",ie();try{if(await zl({id:l.value.id,version:l.value.version,items:Ze(w.value)},a.signal),!r.current(a)||!qe.value)return;l.value={...l.value,status:"applied"},V.value=JSON.stringify(w.value),P.success("所选记录已全部采纳"),L("applied",e),await Ae(C.value)}catch(o){r.current(a)&&await ca(o)}finally{r.current(a)&&(O.value="",await M())}}function He(a){return a==="left_service"?"左客服 / 右患者或家属":a==="right_service"?"右客服 / 左患者或家属":"角色未确认"}async function ja(){const a=Ie.value;if(!na.value||!l.value||A.value||a==="unconfirmed"||a===he.value)return;if(ae.value){P.warning("请先完成或取消当前审核修改,等待草稿保存后再重新提炼");return}const e=r.capture(),t=l.value.id,o=l.value.version,g=n.diagnosisId,y=()=>r.current(e)&&g===n.diagnosisId&&C.value===t;de(),ie(),O.value="reextract",x.value="";let E=!1;try{if(await Fe.confirm(`确认已回听并核实角色为“${He(a)}”?将保留旧版结果,复用已完成的转写重新提炼,不重复语音识别;新建议须重新审核,不自动写入病例。`,"确认角色并重新提炼",{type:"warning",confirmButtonText:"角色正确,开始重新提炼",cancelButtonText:"返回回听"}),!y()||!na.value||ae.value)return;E=!0;const k=await Wl({id:t,version:o,channel_roles:a},e.signal);if(!y())return;oa(k,!1),T.value="idle",pe.value=!1,P.success("已提交重新提炼,将复用原转写;新结果仍需审核,不自动写入病例")}catch(k){E&&y()&&await ca(k)}finally{y()&&(O.value="",De(),await M())}}function Ge(a){return!n.viewOnly&&oe.value&&a.can_delete===!0&&["review","failed"].includes(a.status)}async function Sa(a){if(A.value||!Ge(a))return;const e=r.capture(),t=n.diagnosisId,o=a.id,g=a.version,y=()=>r.current(e)&&t===n.diagnosisId;de(),ie(),O.value="delete",x.value="";let E=!1;try{if(await Fe.confirm("删除后,该录音任务及审核草稿将从列表移除,未保存修改会丢弃;不删除或回滚病例。原录音和转写仍按原保留期限清理。重新上传同一文件将创建新的分析任务。确认删除?","删除录音任务",{type:"warning",confirmButtonText:"确认删除",cancelButtonText:"保留录音"}),!y()||!Ge(a)||(E=!0,await ql({id:o,version:g},e.signal),!y()))return;C.value===o&&(xe(),Ve(),C.value=0,l.value=null,w.value=[],V.value="[]",Y.value=[]),U.value=U.value.filter(k=>k.id!==o),x.value="",P.success("录音任务已删除,未修改病例。原资料按保留策略清理。"),await M()}catch(k){E&&y()&&(x.value=ue(k))}finally{y()&&(O.value="",De(),await M())}}async function Ka(){var e,t;if(!((e=l.value)!=null&&e.can_retry)||l.value.status!=="failed"||!W.value||A.value)return;const a=r.capture();try{await Fe.confirm("仅对服务端已确认失败、允许重试的任务重新分析。确认继续?","确认重试",{type:"warning"})}catch{return}if(!(!r.current(a)||!((t=l.value)!=null&&t.can_retry)||l.value.status!=="failed"||!W.value)){O.value="retry",ie();try{await jl(l.value.id,a.signal),r.current(a)&&await Ae(C.value)}catch(o){r.current(a)&&(x.value=ue(o))}finally{r.current(a)&&(O.value="",await M())}}}async function fa(a){await pa(wl(a))}async function Ya(){Ye(),await pa()}async function Ea(a){var e;await pa((((e=Te.value)==null?void 0:e.currentTime)||0)*1e3,a==="original"?void 0:a)}async function pa(a,e){var k;if(!oe.value||!((k=l.value)!=null&&k.audio_available))return;const t=++ce;if(se.value="",e!==void 0&&(!me.value||e!==0&&e!==1)){Ye(),se.value="未取得可验证的双声道片段,无法隔离声道;请使用原音播放。";return}const o=r.capture(),g=l.value.id;if(!j.value){const B=++Ne;we.value=!0;try{const N=await Kl(g,o.signal);if(!r.current(o)||B!==Ne||g!==C.value)return;j.value=URL.createObjectURL(N)}catch(N){r.current(o)&&B===Ne&&(x.value=ue(N))}finally{r.current(o)&&B===Ne&&(we.value=!1)}}if(await Vl(),!r.current(o)||t!==ce||g!==C.value||!j.value||!Te.value)return;const y=Te.value;sa!==y&&(ee==null||ee.dispose(),ee=Hl(y),sa=y);const E=ee;ke.value=!0;try{if(!E||!await E.select(e??"original")||!r.current(o)||t!==ce||g!==C.value||(X.value=e??"original",typeof a!="number"||!Number.isFinite(a)))return;y.currentTime=Math.max(0,a/1e3);try{await y.play()}catch{r.current(o)&&t===ce&&(se.value="播放未启动,请使用播放器控件继续。")}}catch(B){r.current(o)&&t===ce&&(X.value="original",se.value=ue(B))}finally{r.current(o)&&t===ce&&(ke.value=!1)}}function Ha(a){if(!a)return"由保留策略控制";const e=typeof a=="number"||/^\d+$/.test(a)?new Date(Number(a)*1e3):new Date(a);return Number.isNaN(e.getTime())?String(a):e.toLocaleString("zh-CN",{timeZone:"Asia/Shanghai"})}function Ra(){ba.value=document.visibilityState!=="hidden"}return ga([()=>n.diagnosisId,Oe,()=>!!n.capabilities.preview_only],([a,e])=>{xe(),a!==ka&&(Ve(),ka=a,C.value=0,l.value=null,w.value=[],V.value="[]",U.value=[],le.value=null,Re.value="",_e.value="unconfirmed",ge.value=!1,Y.value=[],Ee.value=!1,x.value="",q.value="",$.value=!1),e&&(M(),De())},{immediate:!0}),ga([()=>JSON.stringify(w.value),D],()=>{H||De()},{flush:"sync"}),ga(()=>n.capabilities.models,a=>{var e;a.some(t=>t.value===be.value)||(be.value=((e=a[0])==null?void 0:e.value)||"")}),Ll(()=>document.addEventListener("visibilitychange",Ra)),Nl(()=>{xe(),document.removeEventListener("visibilitychange",Ra)}),c({confirmLeave:ra,refresh:M,hasUnsavedChanges:()=>ae.value}),(a,e)=>{var Ia,Oa,Ua,La;const t=Za,o=Xa,g=al,y=ll,E=el,k=il,B=tl,N=nl,Be=ul,F=rl,fe=vl,Qe=ol,Ga=cl,Qa=sl;return oe.value?(i(),f("section",Gl,[m("div",Ql,[m("div",Zl,[C.value?(i(),R(t,{key:0,link:"",type:"primary",disabled:A.value,onClick:Ma},{default:p(()=>[...e[13]||(e[13]=[S("返回列表",-1)])]),_:1},8,["disabled"])):(i(),f("h3",Xl,[e[14]||(e[14]=S("回访录音 ",-1)),m("span",null,v(U.value.length),1)]))]),m("div",et,[_(t,{link:"","aria-expanded":Ee.value,onClick:e[0]||(e[0]=s=>Ee.value=!Ee.value)},{default:p(()=>[...e[15]||(e[15]=[S("使用说明",-1)])]),_:1},8,["aria-expanded"]),_(t,{loading:ze.value,disabled:A.value,onClick:M},{default:p(()=>[...e[16]||(e[16]=[S("刷新",-1)])]),_:1},8,["loading","disabled"]),!C.value&&!u.viewOnly&&u.capabilities.can_upload?(i(),R(t,{key:0,type:"primary",disabled:!W.value||A.value||$.value,onClick:Pa},{default:p(()=>[...e[17]||(e[17]=[S("上传录音",-1)])]),_:1},8,["disabled"])):d("",!0)])]),Ee.value?(i(),f("div",at,[te.value?(i(),f("p",lt,v(u.capabilities.preview_only?"当前仅开放测试识别与提炼,可核对并保存审核草稿;测试预览任务不提供确认写入。":"这是历史测试任务,不写入病例;新上传的真实录音可按正常业务流程审核后确认入单。"),1)):(i(),f("p",tt,"录音只生成建议,不会自动写入。逐项核对后选择采纳,再确认写入;日常记录按日期和时段分别保留。")),e[18]||(e[18]=m("p",null,"仅当前可见标签页每 5 秒刷新;已编辑内容不会被覆盖。后台分析不受关闭页面影响,未知结果请先核对任务或账单,勿重复上传。",-1)),l.value?(i(),f("p",it,"任务 #"+v(l.value.id)+" · 版本 "+v(l.value.version)+" · 保留至 "+v(Ha(l.value.expires_at)),1)):d("",!0)])):d("",!0),te.value?(i(),R(o,{key:1,type:"warning",closable:!1,title:u.capabilities.preview_only?"仅测试识别与提炼,不写入病例":"历史测试任务,仅供查看和审阅",description:"此任务保留测试用途。新业务录音请新建任务,人工核对后确认入单。","show-icon":""},null,8,["title"])):d("",!0),wa.value?u.capabilities.can_upload&&!u.capabilities.models.length?(i(),R(o,{key:3,type:"warning",closable:!1,title:"暂无可用的分析模型,暂不可上传。已有任务可查看。"})):d("",!0):(i(),R(o,{key:2,type:"warning",closable:!1,title:u.capabilities.preview_only?"测试预览尚未就绪,暂不可上传或重试。已有任务可查看。":"当前环境尚未通过音频能力验证,暂不可上传或重试。已有任务可查看。"},null,8,["title"])),u.basicDirty?(i(),R(o,{key:4,type:"warning",closable:!1,title:te.value?"病历有未保存修改,测试预览不会覆盖这些修改。":"病历有未保存修改,请先保存病历,再写入录音建议。"},null,8,["title"])):d("",!0),$.value?(i(),R(o,{key:5,type:"warning",closable:!1,title:"创建结果未确认,已停止重复提交。请刷新列表并联系管理员核对,不要重新上传同一录音。"})):d("",!0),x.value?(i(),R(o,{key:6,type:"error",closable:!1,title:x.value,"show-icon":""},null,8,["title"])):d("",!0),C.value?l.value?d("",!0):(i(),f("div",ot,"正在加载录音任务…")):(i(),f("div",ut,[_(E,{data:U.value,"max-height":"440",size:"small","table-layout":"fixed","empty-text":"暂无录音,上传后可提炼回访资料","aria-label":"录音任务列表"},{default:p(()=>[_(g,{label:"录音","min-width":"210"},{default:p(({row:s})=>[_(t,{class:"filename-button",link:"",type:"primary",disabled:A.value,onClick:G=>va(s.id)},{default:p(()=>[S(v(s.file_name),1)]),_:2},1032,["disabled","onClick"]),m("div",nt,v(s.recorded_at),1)]),_:1}),_(g,{label:"状态",width:"145"},{default:p(({row:s})=>[_(y,{size:"small",type:Aa(s.status)},{default:p(()=>[S(v(Q(Na)(s)),1)]),_:2},1032,["type"]),s.transcript_available&&(s.status==="failed"||s.status==="needs_reconciliation")?(i(),f("div",st,"转写已保留")):d("",!0)]),_:1}),_(g,{label:"操作",width:"112",align:"right"},{default:p(({row:s})=>[_(t,{link:"",type:"primary",disabled:A.value,onClick:G=>va(s.id)},{default:p(()=>[...e[19]||(e[19]=[S("查看",-1)])]),_:1},8,["disabled","onClick"]),!u.viewOnly&&s.can_delete!==void 0?(i(),R(t,{key:0,link:"",type:"danger",disabled:A.value||!Ge(s),title:s.delete_block_reason||"删除未入单录音任务",onClick:G=>Sa(s)},{default:p(()=>[...e[20]||(e[20]=[S("删除",-1)])]),_:1},8,["disabled","title","onClick"])):d("",!0)]),_:1})]),_:1},8,["data"])])),C.value&&l.value?(i(),f("section",rt,[m("div",vt,[m("div",ct,[m("h3",null,v(l.value.file_name),1),m("span",null,"通话时间 "+v(l.value.recorded_at),1)]),m("div",dt,[_(y,{size:"small",type:Aa(l.value.status)},{default:p(()=>[S(v(Q(Na)(l.value)),1)]),_:1},8,["type"]),!u.viewOnly&&l.value.can_delete!==void 0?(i(),R(t,{key:0,link:"",type:"danger",disabled:A.value||!Ge(l.value),title:l.value.delete_block_reason||"删除未入单录音任务",onClick:e[1]||(e[1]=s=>Sa(l.value))},{default:p(()=>[...e[21]||(e[21]=[S("删除录音",-1)])]),_:1},8,["disabled","title"])):d("",!0)])]),l.value.status==="running"||l.value.status==="queued"?(i(),f("p",ft,v(Q(yl)(l.value)),1)):d("",!0),l.value.error_message||l.value.status==="failed"?(i(),R(o,{key:1,type:l.value.status==="failed"?"error":"warning",closable:!1,title:l.value.error_message||"任务处理失败,不能写入;请先核对失败原因。"},null,8,["type","title"])):d("",!0),Q(ya)(l.value)?(i(),R(o,{key:2,type:"warning",closable:!1,title:Q(ya)(l.value)},null,8,["title"])):d("",!0),l.value.status==="needs_reconciliation"?(i(),R(o,{key:3,type:"error",closable:!1,title:"上游结果待核对,禁止重发。请管理员先确认上游任务或账单。"})):d("",!0),l.value.status==="expired"?(i(),R(o,{key:4,type:"warning",closable:!1,title:"录音和转录已过保留期,不能继续写入;已采纳的业务记录保留。"})):d("",!0),l.value.can_retry&&l.value.status==="failed"&&!u.viewOnly?(i(),R(t,{key:5,class:"retry-button",disabled:!W.value||A.value,onClick:Ka},{default:p(()=>[...e[22]||(e[22]=[S("重试已确认失败的任务",-1)])]),_:1},8,["disabled"])):d("",!0),m("div",pt,[e[26]||(e[26]=m("div",{class:"muted"},"回访摘要 · AI未核实草稿,不代表已确认病情",-1)),m("p",null,v(l.value.summary||"暂无回访摘要"),1),m("div",yt,[m("span",null,[S(v(l.value.status==="applied"?"已写入":"已选")+" ",1),m("strong",null,v(Ce.value),1),e[23]||(e[23]=S(" 项",-1))]),m("span",null,[e[24]||(e[24]=S("待核实 ",-1)),m("strong",null,v(Fa.value),1),e[25]||(e[25]=S(" 项",-1))])])]),l.value.status==="review"&&!w.value.length?(i(),R(o,{key:6,type:"warning",closable:!1,title:"未生成可写入信息",description:l.value.uncertainties.length?`本次提炼保留了 ${l.value.uncertainties.length} 条待核实原因,已展示在下方。请结合原文回听核对,尤其注意声道角色是否相符。`:"请查看回访摘要并回听录音;本次没有可供确认写入的结构化候选。","show-icon":""},null,8,["description"])):d("",!0),me.value&&!["queued","running"].includes(l.value.status)?(i(),f("section",mt,[J.value!=="unconfirmed"&&!pe.value&&!K.value?(i(),f("div",gt,[m("span",null,v(J.value==="left_service"?"左客服端 / 右患者或家属端":"右客服端 / 左患者或家属端")+" · 已确认",1),re.value?(i(),R(t,{key:0,link:"",type:"primary",onClick:e[2]||(e[2]=s=>pe.value=!0)},{default:p(()=>[...e[27]||(e[27]=[S("修改",-1)])]),_:1})):d("",!0)])):(i(),f("label",_t,[e[28]||(e[28]=S("声道角色(人工确认)",-1)),_(B,{"model-value":D.value,disabled:!re.value||A.value&&O.value!=="save","onUpdate:modelValue":$a},{default:p(()=>[_(k,{label:"角色待确认",value:"unconfirmed"}),_(k,{label:"左客服端 / 右患者或家属端",value:"left_service"}),_(k,{label:"右客服端 / 左患者或家属端",value:"right_service"})]),_:1},8,["model-value","disabled"])])),J.value==="unconfirmed"||pe.value||K.value?(i(),f("p",bt,"声道不等于已核实的说话人身份。角色标注不自动重新提炼;变更后保存草稿会取消全部采纳,须重新核对。")):d("",!0),J.value!=="unconfirmed"&&!K.value?(i(),f("p",wt,"当前角色已确认,无需再次选择;只有左右标错时才需修改。")):d("",!0),K.value?(i(),f("p",kt,"角色标注正在等待保存;保存后请逐项重新核对。")):d("",!0)])):d("",!0),(Ia=l.value.role_check)!=null&&Ia.conflict||l.value.can_reextract!==void 0&&J.value!==he.value&&J.value!=="unconfirmed"?(i(),f("section",ht,[m("strong",null,v((Oa=l.value.role_check)!=null&&Oa.conflict?"声道角色与转写内容可能不一致":"审核角色已修改,原提炼结果尚未更新"),1),m("p",null,v(((Ua=l.value.role_check)==null?void 0:Ua.message)||"修改角色标注不会自动改变已生成的建议,可按核实后的角色重新提炼。"),1),(i(!0),f(Me,null,Pe(((La=l.value.role_check)==null?void 0:La.evidence)||[],(s,G)=>(i(),f("blockquote",{key:G},[m("span",null,v(s.channel===0?"左声道":"右声道")+" · "+v(Q(ma)(s.start_ms))+":"+v(s.text),1),l.value.audio_available?(i(),R(t,{key:0,link:"",type:"primary",onClick:Kt=>fa(s.start_ms)},{default:p(()=>[...e[29]||(e[29]=[S("回听依据",-1)])]),_:1},8,["onClick"])):d("",!0)]))),128)),m("p",null,"当前提炼依据:"+v(He(he.value))+"。"+v(Ie.value!=="unconfirmed"?`待确认的新角色:${He(Ie.value)}。`:"请先回听并修改上方角色标注。")+"建议仅供核对,系统不会自动交换角色。",1),_(t,{type:"primary",plain:"",disabled:!na.value||A.value||ae.value||Ie.value==="unconfirmed"||Ie.value===he.value,onClick:ja},{default:p(()=>[...e[30]||(e[30]=[S("确认角色并重新提炼",-1)])]),_:1},8,["disabled"]),ae.value?(i(),f("p",Ct,"请先完成当前单项核对或取消编辑,等待审核草稿保存后再重新提炼。")):l.value.reextract_block_reason?(i(),f("p",xt,v(l.value.reextract_block_reason),1)):d("",!0),e[31]||(e[31]=m("p",{class:"muted"},"复用已完成的转写,不重复语音识别;旧结果保留,重新提炼不自动写入病例。",-1))])):d("",!0),(l.value.extraction_revision||0)>0?(i(),f("p",At,"第 "+v((l.value.extraction_revision||0)+1)+" 版提炼 · "+v(He(he.value))+" · 历史结果已保留",1)):d("",!0),(i(),R(fl,{key:C.value,ref_key:"reviewRef",ref:Se,items:w.value,"onUpdate:items":e[4]||(e[4]=s=>w.value=s),fields:l.value.fields||u.capabilities.fields,disabled:!re.value||z.value||O.value!==""&&O.value!=="save","can-daily":u.capabilities.can_daily,applied:l.value.status==="applied",uncertainties:l.value.uncertainties,"snapshot-items":l.value.items,"channel-roles":J.value,"save-state":T.value,"persisted-revision":ta.value,onSavedNext:e[5]||(e[5]=s=>da(!0)),onSeek:fa},{player:p(()=>[m("div",St,[l.value.audio_available?(i(),R(t,{key:0,size:"small",loading:we.value,onClick:Ya},{default:p(()=>[S(v(j.value?"重新加载录音":"加载录音播放"),1)]),_:1},8,["loading"])):(i(),f("span",Et,"录音不可播放或已清理")),j.value?(i(),f("audio",{key:j.value,ref_key:"audioElement",ref:Te,src:j.value,controls:"",preload:"metadata"},null,8,Rt)):d("",!0)]),me.value&&l.value.audio_available?(i(),f("div",Tt,[_(t,{size:"small",type:X.value==="original"?"primary":"default","aria-pressed":X.value==="original",disabled:we.value||ke.value,onClick:e[3]||(e[3]=s=>Ea("original"))},{default:p(()=>[...e[32]||(e[32]=[S("完整对话",-1)])]),_:1},8,["type","aria-pressed","disabled"]),(i(),f(Me,null,Pe([0,1],s=>_(t,{key:s,size:"small",type:X.value===s?"primary":"default","aria-pressed":X.value===s,disabled:we.value||ke.value,onClick:G=>Ea(s)},{default:p(()=>[S(v(Q(ml)(s,J.value)),1)]),_:2},1032,["type","aria-pressed","disabled","onClick"])),64)),m("span",It,v(ke.value?"正在切换声道…":j.value?X.value==="original"?"回听模式:双方对话":`回听模式:仅${X.value===0?"左":"右"}声道`:"尚未加载录音"),1)])):d("",!0),se.value?(i(),f("p",Ot,v(se.value),1)):d("",!0),l.value.audio_available?(i(),f("p",Ut,"回听对话默认从该区间前 3 秒开始,连续播放双方声音;可随时切换为只听一方。")):d("",!0)]),_:1},8,["items","fields","disabled","can-daily","applied","uncertainties","snapshot-items","channel-roles","save-state","persisted-revision"])),_(Be,{modelValue:Y.value,"onUpdate:modelValue":e[6]||(e[6]=s=>Y.value=s),class:"original-collapse"},{default:p(()=>[_(N,{title:"完整对话转写",name:"original"},{default:p(()=>[ia.value.length?(i(),f("div",Lt,[e[34]||(e[34]=m("p",{class:"muted"},"双方转写按同一时间区间并列展示,不表示发言先后;重叠发言与具体问答请结合录音核对。",-1)),(i(!0),f(Me,null,Pe(Ba.value,s=>(i(),f("section",{key:s.id,class:"transcript-segment"},[m("div",Nt,[m("span",null,v(Q(ma)(s.start_ms))+"–"+v(Q(ma)(s.end_ms)),1),l.value.audio_available?(i(),R(t,{key:0,link:"",type:"primary",onClick:G=>fa(s.start_ms)},{default:p(()=>[...e[33]||(e[33]=[S("回听双方对话",-1)])]),_:1},8,["onClick"])):d("",!0)]),m("div",Vt,[(i(!0),f(Me,null,Pe(s.segments,G=>(i(),f("div",{key:G.id,class:"dialogue-side"},[m("strong",null,v(Q(gl)(G.channel,J.value)),1),m("pre",null,v(G.text||"(该区间无转写文本,不代表没有说话)"),1)]))),128))])]))),128))])):(i(),f("pre",Dt,v(l.value.transcript||"暂无转录"),1))]),_:1})]),_:1},8,["modelValue"]),l.value.status==="review"?(i(),f("div",Bt,[m("div",Ft,[m("strong",null,"已选 "+v(Ce.value)+" 项",1),m("span",null,v(Da.value),1)]),re.value?(i(),f("div",$t,[_(t,{link:"",disabled:A.value,loading:O.value==="save",onClick:e[7]||(e[7]=s=>da())},{default:p(()=>[S(v(T.value==="error"||T.value==="conflict"?"重试保存草稿":"立即保存草稿"),1)]),_:1},8,["disabled","loading"]),qe.value?(i(),R(t,{key:0,type:"primary",disabled:A.value||u.basicDirty||!Ce.value||!!ve.value,loading:O.value==="apply",onClick:qa},{default:p(()=>[...e[35]||(e[35]=[S("确认写入",-1)])]),_:1},8,["disabled","loading"])):d("",!0)])):d("",!0),ve.value?(i(),f("p",Mt,v(ve.value),1)):d("",!0)])):d("",!0),l.value.status==="applied"?(i(),f("p",Pt,v(te.value?"该任务已有历史采纳记录;当前为测试预览,不允许再次写入。":"本次审核已完成,所选项已写入诊单或日常记录,不能重复写入。"),1)):d("",!0)])):d("",!0),_(Qa,{modelValue:ge.value,"onUpdate:modelValue":e[12]||(e[12]=s=>ge.value=s),title:"上传回访录音",width:"min(520px, calc(100vw - 32px))","append-to-body":"","close-on-click-modal":!1,"close-on-press-escape":!z.value,"show-close":!z.value,"before-close":xa},{footer:p(()=>[_(t,{disabled:z.value,onClick:e[11]||(e[11]=s=>xa())},{default:p(()=>[...e[37]||(e[37]=[S("取消",-1)])]),_:1},8,["disabled"]),_(t,{type:"primary",disabled:!W.value||A.value||$.value,loading:z.value,onClick:za},{default:p(()=>[...e[38]||(e[38]=[S("上传并分析",-1)])]),_:1},8,["disabled","loading"])]),default:p(()=>[_(Qe,{"label-position":"top",class:"upload-form"},{default:p(()=>[_(F,{label:"录音文件"},{default:p(()=>[m("input",{ref_key:"fileInput",ref:ua,type:"file",accept:"audio/mpeg,audio/mp4,audio/wav,audio/amr,.mp3,.m4a,.wav,.amr",disabled:!W.value||A.value||$.value,"aria-label":"录音文件",onChange:Ja},null,40,Jt),m("small",null,"支持 MP3 / M4A / WAV / AMR,最多 "+v(Math.floor(u.capabilities.limits.max_bytes/1024/1024))+" MB / "+v(Math.floor(u.capabilities.limits.max_seconds/60))+" 分钟。",1)]),_:1}),_(F,{label:"实际通话时间(北京时间)"},{default:p(()=>[_(fe,{modelValue:Re.value,"onUpdate:modelValue":e[8]||(e[8]=s=>Re.value=s),type:"datetime","value-format":"YYYY-MM-DD HH:mm:ss",placeholder:"用于识别昨天、前天等相对日期",disabled:!W.value||A.value||$.value},null,8,["modelValue","disabled"])]),_:1}),_(F,{label:"本次录音的声道角色"},{default:p(()=>[_(B,{modelValue:_e.value,"onUpdate:modelValue":e[9]||(e[9]=s=>_e.value=s),"aria-label":"本次录音的声道角色",disabled:!W.value||A.value||$.value},{default:p(()=>[_(k,{label:"暂不确定 / 单声道",value:"unconfirmed"}),_(k,{label:"左客服 / 右患者或家属",value:"left_service"}),_(k,{label:"右客服 / 左患者或家属",value:"right_service"})]),_:1},8,["modelValue","disabled"]),e[36]||(e[36]=m("small",null,"已知角色会在提炼前提供给模型;不确定请勿猜测。单声道不按左右区分身份。",-1))]),_:1}),_(Be,{class:"advanced-settings"},{default:p(()=>[_(N,{title:"高级设置 · 分析模型",name:"model"},{default:p(()=>[_(F,{label:"分析模型"},{default:p(()=>[_(B,{modelValue:be.value,"onUpdate:modelValue":e[10]||(e[10]=s=>be.value=s),disabled:!W.value||A.value||$.value,placeholder:"选择已配置的模型"},{default:p(()=>[(i(!0),f(Me,null,Pe(u.capabilities.models,s=>(i(),R(k,{key:s.value,label:s.label,value:s.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1})]),_:1})]),_:1}),x.value?(i(),R(o,{key:0,type:"error",closable:!1,title:x.value,"show-icon":""},null,8,["title"])):d("",!0),$.value&&!z.value?(i(),R(o,{key:1,type:"warning",closable:!1,title:"创建结果未确认,请关闭弹窗后刷新任务列表并联系管理员核对,不要重新上传。"})):d("",!0),z.value?(i(),R(Ga,{key:2,percentage:We.value},null,8,["percentage"])):d("",!0),q.value?(i(),f("p",zt,v(q.value),1)):d("",!0),m("p",Wt,v(te.value?"本次仅测试识别与提炼,可保存审核草稿,不允许写入病历。":"分析仅生成建议,人工确认后才会写入。"),1)]),_:1},8,["modelValue","close-on-press-escape","show-close"])])):d("",!0)}}}),jt=dl(qt,[["__scopeId","data-v-6f2b5251"]]),li=Object.freeze(Object.defineProperty({__proto__:null,default:jt},Symbol.toStringTag,{value:"Module"}));export{jt as F,li as a,ai as f};