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

2 lines
9.1 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{h,K as k,L as $,z as F,A as x}from"./element-plus-DDINy080.js";import{f as A,ak as d,I as v,G as f,aN as N,F as C,ap as E,A as g}from"./@vue/runtime-core-C6bnekPw.js";import{Q as T}from"./@vue/shared-mAAVTE9n.js";import{y as I}from"./@vue/reactivity-DiY1c2vO.js";import{_ as M}from"./index-CucNzNKR.js";const O=2097152,q={diagnosis:"诊单资料",blood:"血糖 / 血压",diet:"饮食",exercise:"运动",tracking_note:"跟踪备注"},z={queued:"等待处理",running:"正在分析",review:"待人工审核",applied:"已采纳",failed:"处理失败",needs_reconciliation:"结果待核对",expired:"已过保留期"},L={transcribing:"正在转写",extracting:"正在提炼",validating:"正在校验",review:"待人工审核"};function U(e){return e.status==="running"&&L[e.stage]||z[e.status]||e.status}function ee(e){const t=e.pipeline_progress,r=t&&Number.isSafeInteger(t.transcribed)&&Number.isSafeInteger(t.total)&&t.total>0&&t.transcribed>=0&&t.transcribed<=t.total;return`${U(e)}${r?` · 转写片段 ${t.transcribed} / ${t.total}`:""};人工审核前不会写入业务记录。`}function te(e){return!e.transcript_available||!e.transcript.trim()?"":e.status==="failed"?"处理失败,已完成片段的转写仍可查看。保留转写不代表提炼成功,不能直接写入病历。":e.status==="needs_reconciliation"?"结果待核对,已完成片段的转写仍可查看。请先核对上游结果,不要重复发送。":""}function ne(e){return typeof e.start_ms!="number"||!Number.isFinite(e.start_ms)||e.start_ms<0||e.channel!==void 0&&e.channel!==0&&e.channel!==1?"":e.position_type==="segment"?!e.segment_id||typeof e.end_ms!="number"||!Number.isFinite(e.end_ms)||e.end_ms<=e.start_ms?"":`回听对话 ${b(e.start_ms)}–${b(e.end_ms)}`:`播放 ${b(e.start_ms)}`}function b(e){const t=Math.max(0,Math.floor(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`}function D(e){return e==="left_service"||e==="right_service"?e:"unconfirmed"}function re(e=[]){return e.some(t=>t.channel===0)&&e.some(t=>t.channel===1)}function le(e,t="unconfirmed"){if(e!==0&&e!==1)return"未标注声道";const r=e===0?"左声道":"右声道",n=D(t);return n==="unconfirmed"?`${r} · 角色待确认`:`${r} · ${(n==="left_service"?e===0:e===1)?"客服端":"患者/家属端"}(人工标注)`}function ae(e){const t=new Map;for(const r of e){const n=`${r.start_ms}:${r.end_ms}`;t.has(n)||t.set(n,{id:n,start_ms:r.start_ms,end_ms:r.end_ms,segments:[]}),t.get(n).segments.push(r)}return[...t.values()].sort((r,n)=>r.start_ms-n.start_ms||r.end_ms-n.end_ms).map(r=>({...r,segments:[...r.segments].sort((n,l)=>(n.channel??-1)-(l.channel??-1))}))}function ie(e){return Number.isFinite(e)?Math.max(0,e-3e3):0}function oe(e,t){return t==="unconfirmed"?e===0?"只听左声道":"只听右声道":(t==="left_service"?e===0:e===1)?"只听客服":"只听患者/家属"}const R=e=>JSON.parse(JSON.stringify(e));function j(e,t){if(e==null||e===""||Array.isArray(e)&&!e.length)return"未记录";const r=n=>{var l,a;return((a=(l=t.options)==null?void 0:l.find(i=>String(i.value)===String(n)))==null?void 0:a.label)||String(n)};return Array.isArray(e)?e.map(r).join("、"):r(e)}function se(e,t){return Object.keys(e.values).some(r=>{var n;return(n=t[e.kind])==null?void 0:n.some(l=>l.key===r&&!l.readonly)})}function de(e,t){var n,l;const r=new Set;for(const a of e.filter(i=>i.selected))if(a.kind==="diagnosis")for(const i of Object.keys(a.values)){if(r.has(i))return`${((l=(n=t.diagnosis)==null?void 0:n.find(o=>o.key===i))==null?void 0:l.label)||i}存在多条选中建议,请合并内容到一项或仅保留一项后再确认写入`;r.add(i)}return""}function P(e,t){var r;if(!e.selected)return"";for(const n of Object.keys(e.values)){const l=(r=t[e.kind])==null?void 0:r.find(a=>a.key===n);if(!l||l.readonly)return`${(l==null?void 0:l.label)||n} 当前不可编辑,请先取消采纳该字段`}return""}function Y(e,t){return e.selected?e.needs_review?"请明确核对不确定、冲突或重复内容":e.kind!=="diagnosis"&&!t?"没有日常记录编辑权限":Object.keys(e.values).length?e.kind!=="diagnosis"&&!y(e.record_date)?"请核对并填写有效的记录日期":e.record_time&&!/^([01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/.test(e.record_time)?"请填写有效的记录时间":"":"至少填写一个有效字段":""}function B(e,t,r){return e.needs_review||!!P({...e,selected:!0},t)||!!Y({...e,selected:!0},r)}function ue(e,t,r){return{all:e.length,diagnosis:e.filter(n=>n.kind==="diagnosis").length,daily:e.filter(n=>n.kind!=="diagnosis").length,pending:e.filter(n=>B(n,t,r)).length,selected:e.filter(n=>n.selected).length}}function fe(e,t){const r=new Map(t.map(n=>[n.id,n]));return e.some(n=>{const l=r.get(n.id);return n.selected&&l&&(n.target_id!==l.target_id||n.record_date!==l.record_date)})}function ce(e){return e&&/^([01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/.test(e)?e.slice(0,5):null}function y(e){if(!e||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const[t,r,n]=e.split("-").map(Number),l=new Date(Date.UTC(t,r-1,n));return l.getUTCFullYear()===t&&l.getUTCMonth()===r-1&&l.getUTCDate()===n}function me(e,t){const r=new Map(e.map(n=>[n.id,n]));return R(t).map(n=>{const l=r.get(n.id);return l?{...n,values:{...l.values},record_date:l.record_date,record_time:l.record_time,time_period:l.time_period,target_id:l.target_id,selected:!1,needs_review:!0}:n})}function _(e){return!!(e!=null&&e.enabled)&&(!e.preview_only||e.test_scope_allowed===!0)}function w(e){return!!e&&(e.preview_only?e.preview_ready===!0&&e.test_scope_allowed===!0:e.audio_verified||e.manual_review_enabled===!0&&e.manual_review_ready===!0)}function pe(e,t=!1){return _(e)&&!!e&&(e.preview_only||t?e.can_review===!0:e.can_apply)}function ge(e,t=!1){return _(e)&&w(e)&&!!e&&!e.preview_only&&!t&&e.can_apply}function be(e,t,r,n,l){return l||!n||!_(n)||!w(n)||!n.can_upload?"当前不可上传录音":!e||!e.size?"请选择非空录音文件":e.size>n.limits.max_bytes?"录音文件超过大小限制":/\.(mp3|wav|m4a|amr)$/i.test(e.name)?!/^\d{4}-\d{2}-\d{2} ([01]\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(t)||!y(t.slice(0,10))?"请填写实际录音时间(北京时间)":n.models.some(a=>a.value===r)?"":"请选择可用的分析模型":"请选择支持的录音格式"}function _e(){let e=0,t=new AbortController;return{capture:()=>({generation:e,signal:t.signal}),current:r=>r.generation===e&&!r.signal.aborted,invalidate(){t.abort(),e++,t=new AbortController}}}async function ve(e,t,r,n,l){if(!Number.isSafeInteger(t)||t<65536||t>O)throw new Error("服务端分片配置不匹配,请联系管理员");for(let a=0,i=0;a<e.size;a+=t,i++){if(!n())return!1;const u=await r(i,e.slice(a,a+t));if(!n())return!1;if(!u.received)throw new Error("录音分片未被服务端确认,上传已停止");l(Math.round(Math.min(a+t,e.size)/e.size*100))}return n()}function ye(e){return e instanceof Error?e.message:"请求失败;当前审核内容已保留,请刷新任务状态后确认"}const K={key:0,class:"readonly-value"},G=A({__name:"FollowupAudioField",props:{field:{},modelValue:{type:[String,Number,Boolean,null,Array]},disabled:{type:Boolean},readonly:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const r=e,n=t,l=g(()=>r.modelValue===null||r.modelValue===void 0||r.modelValue===""?void 0:Number(r.modelValue)),a=g(()=>r.modelValue===null||r.modelValue===void 0?"":String(r.modelValue)),i=g(()=>{const u=o=>{var c,m;return((m=(c=r.field.options)==null?void 0:c.find(p=>String(p.value)===String(o)))==null?void 0:m.value)??o};return r.field.type==="multiselect"?Array.isArray(r.modelValue)?r.modelValue.map(u):[]:typeof r.modelValue=="string"||typeof r.modelValue=="number"?u(r.modelValue):""});return(u,o)=>{const c=h,m=$,p=k,S=F,V=x;return e.readonly?(d(),v("span",K,T(I(j)(e.modelValue,e.field)),1)):e.field.type==="number"?(d(),f(c,{key:1,"model-value":l.value,disabled:e.disabled,controls:!1,"onUpdate:modelValue":o[0]||(o[0]=s=>n("update:modelValue",s??null))},null,8,["model-value","disabled"])):e.field.type==="select"||e.field.type==="multiselect"?(d(),f(p,{key:2,"model-value":i.value,multiple:e.field.type==="multiselect",disabled:e.disabled,clearable:"",filterable:"","onUpdate:modelValue":o[1]||(o[1]=s=>n("update:modelValue",s))},{default:N(()=>[(d(!0),v(C,null,E(e.field.options||[],s=>(d(),f(m,{key:String(s.value),label:s.label,value:s.value},null,8,["label","value"]))),128))]),_:1},8,["model-value","multiple","disabled"])):e.field.type==="date"?(d(),f(S,{key:3,"model-value":a.value,type:"date","value-format":"YYYY-MM-DD",disabled:e.disabled,"onUpdate:modelValue":o[2]||(o[2]=s=>n("update:modelValue",s||null))},null,8,["model-value","disabled"])):(d(),f(V,{key:4,"model-value":a.value,type:"textarea",autosize:{minRows:1,maxRows:5},disabled:e.disabled,"onUpdate:modelValue":o[3]||(o[3]=s=>n("update:modelValue",s))},null,8,["model-value","disabled"]))}}}),J=M(G,[["__scopeId","data-v-a6efa8ff"]]),we=Object.freeze(Object.defineProperty({__proto__:null,default:J},Symbol.toStringTag,{value:"Module"}));export{ce as A,q as B,ne as C,se as D,ue as E,J as F,we as G,ee as a,b,_e as c,oe as d,le as e,U as f,ye as g,ve as h,R as i,me as j,ie as k,ae as l,re as m,D as n,_ as o,w as p,pe as q,te as r,ge as s,B as t,be as u,fe as v,de as w,P as x,Y as y,j as z};