Files
wecom_it_smart_desk/frontend-agent/dist.bak/assets/ApprovalQueue-0zcV_0-8.js
T
Simon bea288e414 feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) ==
- 代办事项真实数据源集成 (企微审批API 8bug修复链)
- H5/坐席端 Logo样式统一+绿色背景
- 视频引导页修复 (localStorage key v2)
- 坐席端 v9 Vue版本修复 (ElMessage._context)
- 截图按钮 v10 修复 (getDisplayMedia user gesture)
- 扫码样式恢复+H5扫码登录跳转修复
- H5截图快捷键提示

== 代码完成待部署 (3项) ==
- 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查)
- 会议室预定-小鱼易联终端 (40文件, 40/40测试通过)
- IT资产升级审批推送 (asset_service.py)

== 需求文档 (2项) ==
- 坐席端AI辅助消息框-PRD (4项新功能确认)
- 坐席端布局优化建议 v2.0 (7天计划)

== 新增文档 ==
- 日报-2026-07-11.md
- 知识迭代Bug修复报告-20260711.md
- 会议室预定-部署指南.md
- CHANGELOG.md 更新

== 测试 ==
- test_todo_integration.py: 40/40
- test_meetingroom.py: 40/40
- test_bugfix_ki_suggestions.py: 21/21
2026-07-11 23:13:10 +08:00

2 lines
7.7 KiB
JavaScript

import{r as q,s as ne,x as O,d as oe,o as se,b as m,c as w,f as l,g as o,w as r,u as s,F as L,z as E,K as le,e as U,i as h,P as ue,h as _,t as c,y as re,n as ie,j as pe,m as ce}from"./index-B1u3nieA.js";function de(){const v=q([]),g=q(0),z=q(!1),p=ne({status:"",audience:"",page:1,page_size:20}),j=q({queued_total:0,pending_total:0,by_audience:{},by_source_type:{}}),u=q(null),V=O(()=>Math.ceil(g.value/p.page_size)),$=O(()=>"/api/admin/approval-queue");async function k(){z.value=!0;try{const t=new URLSearchParams;p.status&&t.set("status",p.status),p.audience&&t.set("audience",p.audience),t.set("page",String(p.page)),t.set("page_size",String(p.page_size));const d=await(await fetch(`${$.value}/queued?${t}`)).json();d.code===0&&d.data?(v.value=d.data.items||[],g.value=d.data.total||0):(console.warn("获取审批队列失败:",d.message),v.value=[],g.value=0)}catch(t){console.error("获取审批队列异常:",t),v.value=[],g.value=0}finally{z.value=!1}}async function T(){try{const i=await(await fetch(`${$.value}/queued/stats`)).json();i.code===0&&i.data&&(j.value=i.data)}catch(t){console.error("获取队列统计失败:",t)}}async function Q(t){u.value=t;try{return(await(await fetch(`${$.value}/queued/${t}/dequeue-approve`,{method:"POST",headers:{"Content-Type":"application/json"}})).json()).code===0?(v.value=v.value.filter(P=>P.id!==t),g.value--,!0):!1}catch(i){return console.error("队列审批失败:",i),!1}finally{u.value=null}}async function D(t,i="审核不通过"){u.value=t;try{return(await(await fetch(`/api/admin/knowledge-iteration/suggestions/${t}/reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reject_reason:i})})).json()).code===0?(v.value=v.value.filter(A=>A.id!==t),g.value--,!0):!1}catch(d){return console.error("队列拒绝失败:",d),!1}finally{u.value=null}}async function R(t){Object.assign(p,t),p.page=t.page??1,await k()}async function x(t){p.page=t,await k()}async function C(){await Promise.all([k(),T()])}return{items:v,total:g,totalPages:V,loading:z,filter:p,stats:j,operatingId:u,fetchQueue:k,fetchStats:T,approveQueued:Q,rejectQueued:D,updateFilter:R,goToPage:x,refresh:C}}const _e={class:"approval-queue-page"},ge={class:"approval-queue-page__header"},ve={class:"approval-queue-page__stats"},fe={class:"approval-queue-page__filters"},ye={class:"approval-queue-page__stat-cards"},me={class:"approval-queue-page__stat-label"},we={class:"approval-queue-page__stat-count"},he={class:"approval-queue-page__list"},qe={key:0,class:"approval-queue-page__empty"},ke={class:"approval-queue-page__item-header"},Ce={class:"approval-queue-page__item-type"},je={class:"approval-queue-page__item-badges"},be={class:"approval-queue-page__item-content"},ze={class:"approval-queue-page__item-meta"},Ve={class:"approval-queue-page__item-actions"},$e={key:0,class:"approval-queue-page__pagination"},Se=oe({__name:"ApprovalQueue",setup(v){pe();const{items:g,total:z,totalPages:p,loading:j,filter:u,stats:V,operatingId:$,fetchStats:k,approveQueued:T,rejectQueued:Q,updateFilter:D,goToPage:R,refresh:x}=de(),C=q(!1),t=q(""),i=q("");async function d(){await D({audience:u.audience,status:u.status})}async function P(n){await T(n)&&await k()}function A(n){t.value=n,i.value="审核不通过",C.value=!0}async function G(){await Q(t.value,i.value)&&(C.value=!1,await k())}function H(n){console.log("查看提案详情:",n.id)}function J(n){return Math.round((n??0)*100)}function K(n){const e=n??0;return e>=.7?"success":e>=.5?"warning":"danger"}function B(n){return{annotation:"标注分析",conversation:"会话分析",ai_uncertain:"AI不确定",manual:"手动录入",document_ragflow:"RAGFlow文档"}[n]||n}function W(n){return{employee_quick_reply:"员工回复",engineer_workguide:"工程师指导"}[n||""]||n||"未知"}function F(n){if(!n.queued_at)return!1;const e=new Date(n.queued_at).getTime();return(Date.now()-e)/(1e3*60*60)>=66}function X(n){if(!n)return"—";const e=new Date(n),f=y=>String(y).padStart(2,"0");return`${e.getMonth()+1}/${e.getDate()} ${f(e.getHours())}:${f(e.getMinutes())}`}return se(()=>{x()}),(n,e)=>{const f=h("el-tag"),y=h("el-option"),I=h("el-select"),b=h("el-button"),Y=h("el-empty"),Z=h("el-pagination"),ee=h("el-input"),ae=h("el-dialog"),te=ue("loading");return m(),w("div",_e,[l("div",ge,[e[6]||(e[6]=l("h2",null,"📋 独立审批队列",-1)),l("div",ve,[o(f,{type:"warning",size:"default"},{default:r(()=>[_(" 待审核 "+c(s(V).pending_total),1)]),_:1}),o(f,{type:"info",size:"default"},{default:r(()=>[_(" 队列中 "+c(s(V).queued_total),1)]),_:1})])]),l("div",fe,[o(I,{modelValue:s(u).audience,"onUpdate:modelValue":e[0]||(e[0]=a=>s(u).audience=a),placeholder:"受众类型",clearable:"",size:"default",style:{width:"160px"},onChange:d},{default:r(()=>[o(y,{label:"全部",value:""}),o(y,{label:"员工快捷回复",value:"employee_quick_reply"}),o(y,{label:"工程师作业指导",value:"engineer_workguide"})]),_:1},8,["modelValue"]),o(I,{modelValue:s(u).status,"onUpdate:modelValue":e[1]||(e[1]=a=>s(u).status=a),placeholder:"状态",clearable:"",size:"default",style:{width:"120px"},onChange:d},{default:r(()=>[o(y,{label:"全部",value:""}),o(y,{label:"待审核",value:"pending"}),o(y,{label:"队列中",value:"queued"})]),_:1},8,["modelValue"]),o(b,{type:"primary",icon:"Refresh",onClick:s(x),loading:s(j)},{default:r(()=>[...e[7]||(e[7]=[_(" 刷新 ",-1)])]),_:1},8,["onClick","loading"])]),l("div",ye,[(m(!0),w(L,null,E(s(V).by_source_type,(a,S)=>(m(),w("div",{key:S,class:"approval-queue-page__stat-card"},[l("span",me,c(B(S)),1),l("span",we,c(a),1)]))),128))]),le((m(),w("div",he,[s(g).length===0&&!s(j)?(m(),w("div",qe,[o(Y,{description:"暂无待审批提案"})])):U("",!0),(m(!0),w(L,null,E(s(g),a=>{var S,M;return m(),w("div",{key:a.id,class:re(["approval-queue-page__item",{"approval-queue-page__item--overdue":F(a)}])},[l("div",ke,[l("div",Ce,[l("span",null,c(a.suggestion_type==="new_faq"?"💡":"🔄"),1),l("span",null,c(a.title||"(无标题)"),1)]),l("div",je,[o(f,{size:"small",type:K(a.confidence)},{default:r(()=>[_(" 置信 "+c(J(a.confidence))+"% ",1)]),_:2},1032,["type"]),o(f,{size:"small",type:"info"},{default:r(()=>[_(c(B(a.source_type)),1)]),_:2},1024),F(a)?(m(),ie(f,{key:0,size:"small",type:"danger"},{default:r(()=>[...e[8]||(e[8]=[_(" 即将超时 ",-1)])]),_:1})):U("",!0)])]),l("div",be,c((S=a.content)==null?void 0:S.substring(0,120))+c(((M=a.content)==null?void 0:M.length)>120?"...":""),1),l("div",ze,[l("span",null,"受众: "+c(W(a.audience)),1),l("span",null,"分类: "+c(a.category),1),l("span",null,"入队: "+c(X(a.queued_at||a.created_at)),1)]),l("div",Ve,[o(b,{size:"small",type:"success",loading:s($)===a.id,onClick:N=>P(a.id)},{default:r(()=>[...e[9]||(e[9]=[_(" 采纳 ",-1)])]),_:1},8,["loading","onClick"]),o(b,{size:"small",type:"danger",onClick:N=>A(a.id)},{default:r(()=>[...e[10]||(e[10]=[_(" 驳回 ",-1)])]),_:1},8,["onClick"]),o(b,{size:"small",onClick:N=>H(a)},{default:r(()=>[...e[11]||(e[11]=[_(" 详情 ",-1)])]),_:1},8,["onClick"])])],2)}),128))])),[[te,s(j)]]),s(p)>1?(m(),w("div",$e,[o(Z,{"current-page":s(u).page,"onUpdate:currentPage":e[2]||(e[2]=a=>s(u).page=a),total:s(z),"page-size":s(u).page_size,layout:"prev, pager, next",onCurrentChange:s(R)},null,8,["current-page","total","page-size","onCurrentChange"])])):U("",!0),o(ae,{modelValue:C.value,"onUpdate:modelValue":e[5]||(e[5]=a=>C.value=a),title:"驳回提案",width:"400px"},{footer:r(()=>[o(b,{onClick:e[4]||(e[4]=a=>C.value=!1)},{default:r(()=>[...e[12]||(e[12]=[_("取消",-1)])]),_:1}),o(b,{type:"danger",onClick:G},{default:r(()=>[...e[13]||(e[13]=[_("确认驳回",-1)])]),_:1})]),default:r(()=>[o(ee,{modelValue:i.value,"onUpdate:modelValue":e[3]||(e[3]=a=>i.value=a),type:"textarea",rows:2,placeholder:"请输入驳回理由..."},null,8,["modelValue"])]),_:1},8,["modelValue"])])}}}),xe=ce(Se,[["__scopeId","data-v-7767270c"]]);export{xe as default};