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

2 lines
17 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{m as Ve,l as $e,N as Oe,O as Se,J as Ie,P as Ee,i as Ne,K as De,L as Te,z as Re,aa as Fe,A as Ue}from"./element-plus-DDINy080.js";import{i as K,z as M,A as z,B as W,e as Be,C as G,F as Pe,D as te,x as ae,t as Q,E as je,y as Je}from"./FollowupAudioField-D4JqpESK.js";import{f as Ae,w as ie,ak as s,I as o,a as m,aN as p,J as r,H as v,G as U,F as I,ap as B,O as f,aq as Le,A as g,n as se}from"./@vue/runtime-core-C6bnekPw.js";import{Q as u}from"./@vue/shared-mAAVTE9n.js";import{y as b,n as E}from"./@vue/reactivity-DiY1c2vO.js";import{_ as ze}from"./index-CucNzNKR.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-CbYn5zW9.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const He={class:"followup-review","aria-label":"回访录音人工审核"},Ye={class:"review-caption"},Ke={key:0},Me={key:0,class:"permission-note"},We={class:"review-table"},Ge={key:0,class:"muted"},Qe={class:"item-meta"},Xe={key:0},Ze={key:1},qe={key:1,class:"item-meta mobile-event-time"},el={key:0,class:"item-meta"},ll={key:1,class:"uncertainty-list","aria-label":"原文待核实信息"},tl={class:"review-player"},al={key:0,class:"editor-notice",role:"status"},il={key:1,class:"inline-editor-heading"},sl={key:2,class:"review-editor"},nl={class:"editor-heading"},dl={key:0,class:"editor-notice",role:"status"},ul={class:"evidence"},ol={key:0,class:"muted"},rl={key:0,class:"muted"},vl={key:1,class:"muted"},cl={key:2,class:"muted"},ml={key:1,class:"review-flags"},pl={key:0},fl={key:1},yl={key:2},bl={key:0,class:"readonly-event"},_l={key:1,class:"event-time"},kl={class:"target-field"},gl={key:2,class:"target-hint",role:"status"},hl={class:"field-grid field-grid--header"},wl={class:"field-label"},xl={key:0},Cl={class:"current-value"},Vl={class:"suggested-value"},$l={key:3,class:"muted"},Ol={key:5,class:"review-error",role:"status"},Sl={key:3,class:"editor-footer"},Il={class:"draft-hint",role:"status"},El=Ae({__name:"FollowupAudioReview",props:{items:{},fields:{},disabled:{type:Boolean},canDaily:{type:Boolean},applied:{type:Boolean},uncertainties:{},snapshotItems:{},channelRoles:{},saveState:{},persistedRevision:{}},emits:["update:items","seek","saved-next"],setup(d,{expose:ne,emit:de}){const n=d,P=de,h=E("all"),t=E(null),_=E(""),w=E(""),N=E(""),D=E(null),ue=g(()=>n.items.findIndex(l=>{var e;return l.id===((e=t.value)==null?void 0:e.id)})+1),H=g(()=>{var e;const l=j.value.findIndex(i=>{var c;return i.id===((c=t.value)==null?void 0:c.id)});return l<0?null:((e=j.value.slice(l+1).find(i=>!i.selected&&!Y(i)))==null?void 0:e.id)||null}),V=g(()=>je(n.items,n.fields,n.canDaily)),j=g(()=>n.items.filter(l=>h.value==="all"||h.value==="diagnosis"&&l.kind==="diagnosis"||h.value==="daily"&&l.kind!=="diagnosis"||h.value==="pending"&&Q(l,n.fields,n.canDaily))),x=g(()=>!!t.value&&JSON.stringify(t.value)!==_.value),$=g(()=>{var e;if(!t.value||!_.value)return!1;const l=((e=n.snapshotItems)==null?void 0:e.find(i=>{var c;return i.id===((c=t.value)==null?void 0:c.id)}))||JSON.parse(_.value);return t.value.target_id!==l.target_id||t.value.record_date!==l.record_date}),X=g(()=>{var e;if(!t.value||!_.value)return[];const l=((e=n.snapshotItems)==null?void 0:e.find(i=>{var c;return i.id===((c=t.value)==null?void 0:c.id)}))||JSON.parse(_.value);return t.value.record_date===l.record_date?t.value.candidates||[]:[]}),T=g(()=>t.value?ae({...t.value,selected:!0},n.fields)||Je({...t.value,selected:!0},n.canDaily):"");function J(l,e){P("update:items",n.items.map(i=>i.id===l?{...i,...e}:i))}function O(l){return Object.keys(l.values).map(e=>(n.fields[l.kind]||[]).find(i=>i.key===e)||{key:e,label:e,type:"text",readonly:!0})}function oe(l){return W[l.kind]}function re(l){return O(l).map(e=>e.label).join("、")||W[l.kind]}function Y(l){return n.disabled||!!n.applied||!te(l,n.fields)||l.kind!=="diagnosis"&&!n.canDaily||!!ae({...l,selected:!0},n.fields)}function ve(l,e){if(!(n.disabled||n.applied)){if(!e){J(l.id,{selected:!1});return}if(!Y(l)){if(Q(l,n.fields,n.canDaily)){R(l.id);return}J(l.id,{selected:!0})}}}function A(l){return n.applied?{label:l.selected?"已写入":"未采纳",type:l.selected?"success":"info"}:te(l,n.fields)?Q(l,n.fields,n.canDaily)?{label:"待核实",type:"warning"}:{label:l.selected?"已选择":"已核对",type:l.selected?"success":"info"}:{label:"只读字段",type:"info"}}function R(l){var i;if(((i=t.value)==null?void 0:i.id)===l&&x.value&&!n.applied){se(()=>{var c,k;(c=D.value)==null||c.scrollIntoView({block:"start"}),(k=D.value)==null||k.focus({preventScroll:!0})});return}if(t.value&&t.value.id!==l&&x.value&&!n.applied){w.value="当前项有未保存修改,请先保存或取消本项修改,再核对其他项。";return}const e=n.items.find(c=>c.id===l);e&&(t.value=K([e])[0],_.value=JSON.stringify(t.value),w.value="",N.value="",se(()=>{var c,k;(c=D.value)==null||c.scrollIntoView({block:"start"}),(k=D.value)==null||k.focus({preventScroll:!0})}))}function L(l){t.value=null,_.value="",w.value=""}function S(l){!t.value||n.disabled||n.applied||l.values&&Object.keys(l.values).some(e=>{var i;return!Object.prototype.hasOwnProperty.call((i=t.value)==null?void 0:i.values,e)})||(t.value={...t.value,...l,selected:!1,needs_review:!0})}function ce(l,e){!t.value||!Object.prototype.hasOwnProperty.call(t.value.values,l)||!(n.fields[t.value.kind]||[]).some(i=>i.key===l&&!i.readonly)||S({values:{...t.value.values,[l]:e}})}function me(l){if(!t.value||Object.keys(t.value.values).length<=1)return;const e={...t.value.values};delete e[l],S({values:e})}function pe(l){!t.value||l&&!X.value.some(e=>e.id===l&&!e.delete_time)||S({target_id:l||null})}function fe(l){!t.value||n.disabled||n.applied||(t.value={...t.value,needs_review:!l,selected:l?t.value.selected:!1})}function Z(l,e=!1){if(!t.value||n.disabled||n.applied||l&&(T.value||$.value))return;const i=t.value,c=e?H.value:null;J(i.id,{values:{...i.values},record_date:i.record_date,record_time:i.record_time,time_period:i.time_period,target_id:i.target_id,selected:l||!T.value&&!$.value&&i.selected,needs_review:$.value||i.needs_review}),L(),P("saved-next"),c?R(c):e&&(N.value="当前列表已核对至末项;可切换分类继续,或确认写入已选内容。")}function ye(){if(!t.value||n.disabled||n.applied)return;if(x.value){w.value="当前项有未保存修改,请先保存或取消修改后再跳过。";return}const l=H.value;J(t.value.id,{selected:!1}),L(),P("saved-next"),l?R(l):N.value="本项暂不采纳,未写入病例;可切换分类继续核对。"}function be(l,e){const i=(n.fields[l.kind]||[]).filter(c=>Object.prototype.hasOwnProperty.call(e.values,c.key)).slice(0,2).map(c=>`${c.label} ${M(e.values[c.key],c)}`).join(",");return`#${e.id} · ${e.record_time||e.time_period||"时间未记录"}${e.time_estimated?"(推定)":""}${i?` · ${i}`:""}`}function _e(l){!G(l)||typeof l.start_ms!="number"||P("seek",l.start_ms)}function ke(l){return typeof l=="string"?l:JSON.stringify(l)}return ie(()=>n.items.find(l=>{var e;return l.id===((e=t.value)==null?void 0:e.id)}),l=>{if(!t.value)return;if(!l){L();return}const e=JSON.stringify(l);if(e===_.value)return;const i=t.value;t.value=x.value&&!n.applied?{...K([l])[0],values:{...i.values},record_date:i.record_date,record_time:i.record_time,time_period:i.time_period,target_id:i.target_id,selected:!1,needs_review:!0}:K([l])[0],_.value=e,w.value="任务数据已更新,当前编辑已保留;请重新核对后选择。"},{deep:!0}),ie(()=>n.applied,l=>{l&&t.value&&R(t.value.id)}),ne({hasUnsavedChanges:()=>x.value}),(l,e)=>{var le;const i=$e,c=Ve,k=Ie,F=Se,q=Ee,C=Ne,ge=Oe,ee=Te,he=De,we=Re,xe=Fe,Ce=Ue;return s(),o("section",He,[m(c,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),class:"review-tabs","aria-label":"提炼结果分类"},{default:p(()=>{var a;return[m(i,{label:`全部 ${V.value.all}`,name:"all"},null,8,["label"]),m(i,{label:`诊单资料 ${V.value.diagnosis}`,name:"diagnosis"},null,8,["label"]),m(i,{label:`日常记录 ${V.value.daily}`,name:"daily"},null,8,["label"]),m(i,{label:`待核实 ${V.value.pending+(((a=d.uncertainties)==null?void 0:a.length)||0)}`,name:"pending"},null,8,["label"])]}),_:1},8,["modelValue"]),r("div",Ye,[r("span",null,u(d.applied?"审核结果":"提炼结果")+" · "+u(j.value.length)+" 项",1),d.applied?v("",!0):(s(),o("span",Ke,"跨分类已选 "+u(V.value.selected)+" 项",1))]),!d.canDaily&&V.value.daily?(s(),o("p",Me,"日常记录仅供查看,当前账号没有编辑权限。")):v("",!0),r("div",We,[m(ge,{data:j.value,"max-height":"360","row-key":"id",size:"small","table-layout":"fixed","empty-text":d.items.length?"此分类暂无内容":"暂无结构化结果,可查看录音原文","aria-label":"回访提炼结果"},{default:p(()=>[d.applied?v("",!0):(s(),U(F,{key:0,label:"采纳",width:"50",align:"center"},{default:p(({row:a})=>[m(k,{"model-value":a.selected,disabled:d.disabled||!a.selected&&Y(a),"aria-label":`采纳${re(a)}`,"onUpdate:modelValue":y=>ve(a,!!y)},null,8,["model-value","disabled","aria-label","onUpdate:modelValue"])]),_:1})),m(F,{label:"字段 / 内容","min-width":"210"},{default:p(({row:a})=>[(s(!0),o(I,null,B(O(a).slice(0,2),y=>(s(),o("div",{key:y.key,class:"result-line"},[r("span",null,u(y.label)+":",1),f(u(b(M)(a.values[y.key],y)),1)]))),128)),O(a).length?v("",!0):(s(),o("span",Ge,"暂无有效字段")),r("div",Qe,[f(u(oe(a)),1),O(a).length>2?(s(),o("span",Xe," · 共 "+u(O(a).length)+" 个字段",1)):v("",!0),a.target_id?(s(),o("span",Ze," · 更新已有记录")):v("",!0)]),a.kind!=="diagnosis"?(s(),o("div",qe,u(a.record_date||"日期待核实")+" · "+u(b(z)(a.record_time)||a.time_period||"时间待核实")+u(a.time_estimated?"(推定)":""),1)):v("",!0)]),_:1}),m(F,{label:"日期 / 时段",width:"130"},{default:p(({row:a})=>[r("span",null,u(a.kind==="diagnosis"?"—":a.record_date||"待补充日期"),1),a.kind!=="diagnosis"?(s(),o("div",el,u(b(z)(a.record_time)||a.time_period||"未提及时间")+u(a.time_estimated?"(推定)":""),1)):v("",!0)]),_:1}),m(F,{label:"状态",width:"90"},{default:p(({row:a})=>[m(q,{size:"small",type:A(a).type},{default:p(()=>[f(u(A(a).label),1)]),_:2},1032,["type"])]),_:1}),m(F,{label:"操作",width:"60",align:"right",fixed:"right"},{default:p(({row:a})=>[m(C,{link:"",type:"primary",onClick:y=>R(a.id)},{default:p(()=>[f(u(d.applied||d.disabled?"查看":"核对"),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data","empty-text"])]),(h.value==="pending"||!d.items.length)&&((le=d.uncertainties)!=null&&le.length)?(s(),o("section",ll,[e[9]||(e[9]=r("strong",null,"本次未能确认的信息与原因",-1)),r("ul",null,[(s(!0),o(I,null,B(d.uncertainties,(a,y)=>(s(),o("li",{key:y},u(ke(a)),1))),128))])])):v("",!0),r("section",{ref_key:"reviewWorkspace",ref:D,class:"review-workspace",tabindex:"-1","aria-label":"同页核对与回听"},[r("div",tl,[Le(l.$slots,"player",{},void 0,!0)]),N.value?(s(),o("p",al,u(N.value),1)):v("",!0),t.value?(s(),o("div",il,[r("strong",null,u(d.applied||d.disabled?"查看审核结果":"核对提炼内容")+" · "+u(ue.value)+" / "+u(d.items.length),1),m(C,{link:"",onClick:e[1]||(e[1]=a=>L())},{default:p(()=>[f(u(x.value?"取消本项修改":"收起核对"),1)]),_:1})])):v("",!0),t.value?(s(),o("section",sl,[r("div",nl,[r("strong",null,u(b(W)[t.value.kind]),1),m(q,{size:"small",type:A(t.value).type},{default:p(()=>[f(u(A(t.value).label),1)]),_:1},8,["type"])]),w.value?(s(),o("p",dl,u(w.value),1)):v("",!0),r("div",ul,[e[10]||(e[10]=r("div",{class:"evidence-title"},"录音原话",-1)),(s(!0),o(I,null,B(t.value.evidence,(a,y)=>(s(),o("blockquote",{key:y},[a.channel===0||a.channel===1?(s(),o("div",ol,u(b(Be)(a.channel,d.channelRoles)),1)):v("",!0),r("span",null,u(a.text),1),b(G)(a)?(s(),U(C,{key:1,link:"",type:"primary",onClick:Nl=>_e(a)},{default:p(()=>[f(u(b(G)(a)),1)]),_:2},1032,["onClick"])):v("",!0)]))),128)),t.value.evidence.some(a=>a.position_type==="segment")?(s(),o("p",rl,"回听位置为转写片段范围,不是原话的逐字时间戳;默认回听双方对话,请结合原始录音核对。")):v("",!0),t.value.evidence.length?v("",!0):(s(),o("p",vl,"未提供原话证据,请人工核实。")),t.value.date_text||t.value.time_text?(s(),o("p",cl,"时间原话:"+u(t.value.date_text||"未提及日期")+" · "+u(t.value.time_text||"未提及时间"),1)):v("",!0)]),t.value.conflict||t.value.possible_duplicate||t.value.time_estimated?(s(),o("div",ml,[t.value.conflict?(s(),o("span",pl,"与已有值冲突")):v("",!0),t.value.possible_duplicate?(s(),o("span",fl,"可能存在重复记录")):v("",!0),t.value.time_estimated?(s(),o("span",yl,"时间由时段推定")):v("",!0)])):v("",!0),t.value.kind!=="diagnosis"?(s(),o(I,{key:2},[d.disabled||d.applied?(s(),o("div",bl,[r("span",null,u(t.value.record_date||"未记录日期")+" · "+u(b(z)(t.value.record_time)||t.value.time_period||"未记录时间"),1),r("span",null,u(t.value.target_id?`更新记录 #${t.value.target_id}`:"新增独立记录"),1)])):(s(),o("div",_l,[r("label",kl,[e[11]||(e[11]=f("写入目标",-1)),m(he,{"model-value":t.value.target_id||0,"onUpdate:modelValue":e[2]||(e[2]=a=>pe(a))},{default:p(()=>[m(ee,{label:"新增独立记录(不覆盖已有行)",value:0}),(s(!0),o(I,null,B(X.value,a=>(s(),U(ee,{key:a.id,value:a.id,disabled:!!a.delete_time,label:be(t.value,a)},null,8,["value","disabled","label"]))),128))]),_:1},8,["model-value"])]),r("label",null,[e[12]||(e[12]=f("记录日期",-1)),m(we,{"model-value":t.value.record_date,type:"date","value-format":"YYYY-MM-DD",placeholder:"请核实日期","onUpdate:modelValue":e[3]||(e[3]=a=>S({record_date:a||null,target_id:null}))},null,8,["model-value"])]),r("label",null,[e[13]||(e[13]=f("记录时间",-1)),m(xe,{"model-value":b(z)(t.value.record_time),"value-format":"HH:mm",format:"HH:mm",placeholder:"未提及可留空","onUpdate:modelValue":e[4]||(e[4]=a=>S({record_time:a||null}))},null,8,["model-value"])]),r("label",null,[e[14]||(e[14]=f("原始时段",-1)),m(Ce,{"model-value":t.value.time_period||"",placeholder:"如早晨、餐后","onUpdate:modelValue":e[5]||(e[5]=a=>S({time_period:a||null}))},null,8,["model-value"])])])),$.value&&!d.applied?(s(),o("p",gl,"日期或目标已更改。保存本项后将自动同步草稿并刷新目标当前值,请依据新值重新核对。")):v("",!0)],64)):v("",!0),r("div",hl,[e[15]||(e[15]=r("span",null,"字段",-1)),r("span",null,u(d.applied?"写入前值":$.value?"旧目标值(待刷新)":"当前值"),1),r("span",null,u(d.applied||d.disabled?"审核值":"拟采纳值"),1)]),(s(!0),o(I,null,B(O(t.value),a=>(s(),o("div",{key:a.key,class:"field-grid"},[r("div",wl,[f(u(a.label),1),a.readonly?(s(),o("small",xl,"只读")):v("",!0)]),r("div",Cl,u(b(M)(t.value.current_values[a.key],a)),1),r("div",Vl,[m(Pe,{field:a,"model-value":t.value.values[a.key],readonly:d.disabled||d.applied||a.readonly,"onUpdate:modelValue":y=>ce(a.key,y)},null,8,["field","model-value","readonly","onUpdate:modelValue"]),!d.disabled&&!d.applied?(s(),U(C,{key:0,link:"",type:"danger",disabled:Object.keys(t.value.values).length<=1,onClick:y=>me(a.key)},{default:p(()=>[...e[16]||(e[16]=[f("移除",-1)])]),_:1},8,["disabled","onClick"])):v("",!0)])]))),128)),!d.disabled&&!d.applied?(s(),o("p",$l,"仅可更正或移除本项提议字段,不采纳整项请取消勾选;新增内容请返回原诊单编辑人工补录。")):v("",!0),!d.disabled&&!d.applied?(s(),U(k,{key:4,"model-value":!t.value.needs_review,class:"review-confirm","onUpdate:modelValue":e[6]||(e[6]=a=>fe(!!a))},{default:p(()=>[...e[17]||(e[17]=[f("我已核对原话、冲突 / 重复及日期时间,确认本项内容",-1)])]),_:1},8,["model-value"])):v("",!0),T.value&&!d.disabled&&!d.applied?(s(),o("p",Ol,u(T.value),1)):v("",!0)])):v("",!0),t.value&&!d.disabled&&!d.applied?(s(),o("div",Sl,[r("span",Il,u(d.saveState==="saving"||d.saveState==="pending"?"审核草稿同步中,不写入病例":d.saveState==="error"||d.saveState==="conflict"?"草稿同步需处理,请查看下方提示":"核对结果自动保存为草稿,最终确认后才写入病例"),1),m(C,{onClick:ye},{default:p(()=>[...e[18]||(e[18]=[f("暂不采纳并下一项",-1)])]),_:1}),m(C,{disabled:!x.value,onClick:e[7]||(e[7]=a=>Z(!1))},{default:p(()=>[...e[19]||(e[19]=[f("保存本项修改",-1)])]),_:1},8,["disabled"]),m(C,{type:"primary",disabled:!!T.value||$.value,onClick:e[8]||(e[8]=a=>Z(!0,!0))},{default:p(()=>[f(u(H.value?"采纳并下一项":"完成核对并选中"),1)]),_:1},8,["disabled"])])):v("",!0)],512)])}}}),yt=ze(El,[["__scopeId","data-v-f8a47a80"]]);export{yt as default};