2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{O as V,d as ce,r as ue,a as q,o as pe,g,B as me,c as y,k as h,e,C as T,w as l,b as m,t as d,l as D,P as Y,N as ge,f as fe,L as _e,s as be,z as N,x as i,G as R,Q as he,R as we,F as I,y as ye,E as w,S as j,_ as ve}from"./index-C4csfvEW.js";import{p as De}from"./assessment-DHftQ0if.js";function Re(_){return V({url:"/admin/assessmentRecord/getList",method:"get",params:_})}function Ve(_){return V({url:"/admin/assessmentRecord/getDetail",method:"get",params:{id:_}})}function ke(_){return V({url:"/admin/assessmentRecord/getReport",method:"get",params:{id:_}})}function xe(_){return V({url:"/admin/assessmentRecord/export",method:"get",params:_,responseType:"blob"})}function Se(_){return V({url:"/admin/assessmentRecord/regenerateReport",method:"post",data:{id:_}})}function Ce(_){return V({url:"/admin/assessmentRecord/batchRegenerateReport",method:"post",data:{ids:_}})}const Le={class:"record-container"},ze={class:"header-content"},Te={class:"header-right"},Ne={class:"sub-text"},Ie={class:"sub-text"},Ee={class:"pagination-wrapper"},Ue={class:"record-detail"},Be={class:"detail-section"},Me={key:0,class:"detail-section"},Oe={class:"section-title"},$e={key:1,class:"detail-section"},qe={class:"record-detail"},Ye={class:"detail-section"},je={class:"section-title"},Pe=ce({__name:"index",setup(_){const P=[{text:"最近一周",value:()=>{const o=new Date,t=new Date;return t.setTime(t.getTime()-6048e5),[t,o]}},{text:"最近一个月",value:()=>{const o=new Date,t=new Date;return t.setTime(t.getTime()-2592e6),[t,o]}},{text:"最近三个月",value:()=>{const o=new Date,t=new Date;return t.setTime(t.getTime()-7776e6),[t,o]}}],C=ue(null),r=q({page:1,pageSize:10,userId:"",status:void 0,startDate:void 0,endDate:void 0}),a=q({loading:!1,tableData:[],total:0,detailVisible:!1,detailLoading:!1,detail:null,reportVisible:!1,reportLoading:!1,report:null,exportLoading:!1,scoreOptionMap:new Map,batchRegenerateLoading:!1,selectedRows:[]});function E(o){switch(o){case 1:return"info";case 2:return"primary";case 3:return"warning";case 4:return"success";case 5:return"danger";default:return"info"}}function F(o){const t=a.scoreOptionMap.get(o);return t?t.label:String(o)}function G(o){const t=a.scoreOptionMap.get(o);return t?t.description:""}async function v(){var o,t;a.loading=!0;try{const n={page:r.page,pageSize:r.pageSize};r.userId&&(n.userId=Number(r.userId)),r.status!==void 0&&(n.status=r.status),r.startDate&&(n.startDate=r.startDate),r.endDate&&(n.endDate=r.endDate);const c=await Re(n);if(c.code===0)a.tableData=((o=c.data)==null?void 0:o.list)||[],a.total=((t=c.data)==null?void 0:t.total)||0;else throw new Error(c.message||"获取测评记录列表失败")}catch(n){const c=n instanceof Error?n.message:"获取测评记录列表失败";w.error(c)}finally{a.loading=!1}}async function K(o){var t;a.detailLoading=!0;try{const n=await Ve(o);if(n.code===0)a.detail=n.data,a.scoreOptionMap.size===0&&((t=n.data)!=null&&t.assessmentTypeId)&&await Q(n.data.assessmentTypeId);else throw new Error(n.message||"获取测评记录详情失败")}catch(n){const c=n instanceof Error?n.message:"获取测评记录详情失败";w.error(c)}finally{a.detailLoading=!1}}async function Q(o){var t;try{const n=await De({page:1,pageSize:100,assessmentTypeId:o});n.code===0&&((t=n.data)!=null&&t.list)&&(a.scoreOptionMap=new Map(n.data.list.map(c=>[c.score,c])))}catch{}}async function A(o){a.reportLoading=!0;try{const t=await ke(o);if(t.code===0)a.report=t.data;else throw new Error(t.message||"获取测评报告失败")}catch(t){const n=t instanceof Error?t.message:"获取测评报告失败";w.error(n)}finally{a.reportLoading=!1}}function U(){r.page=1,v()}function H(){r.userId="",r.status=void 0,r.startDate=void 0,r.endDate=void 0,C.value=null,r.page=1,v()}function J(o){o?(r.startDate=o[0],r.endDate=o[1]):(r.startDate=void 0,r.endDate=void 0)}function W(o){r.pageSize=o,r.page=1,v()}function X(o){r.page=o,v()}function Z(o){a.detailVisible=!0,a.detail=null,K(o.id)}function ee(o){a.reportVisible=!0,a.report=null,A(o.id)}function te(o){a.selectedRows=o}async function ae(o){var t;try{await j.confirm(`确定要重新生成记录 ID=${o.id} 的报告吗?`,"重新生成报告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const n=await Se(o.id);if(n.code===0)w.success("已提交重新生成,请稍后刷新查看"),v();else throw new Error(n.message||"重新生成失败")}catch(n){if(n==="cancel"||(t=n==null?void 0:n.toString)!=null&&t.call(n).includes("cancel"))return;const c=n instanceof Error?n.message:"重新生成失败";w.error(c)}}async function le(){var t;const o=a.selectedRows.filter(n=>n.status===3||n.status===5);if(o.length===0){w.warning('请先勾选状态为"生成中"或"生成失败"的记录');return}try{await j.confirm(`已选中 ${o.length} 条符合条件的记录,确定批量重新生成?`,"批量重新生成报告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),a.batchRegenerateLoading=!0;const n=o.map(f=>f.id),c=await Ce(n);if(c.code===0){const{successCount:f,skippedCount:L}=c.data;w.success(`成功入队 ${f} 条,跳过 ${L} 条`),v()}else throw new Error(c.message||"批量重新生成失败")}catch(n){if(n==="cancel"||(t=n==null?void 0:n.toString)!=null&&t.call(n).includes("cancel"))return;const c=n instanceof Error?n.message:"批量重新生成失败";w.error(c)}finally{a.batchRegenerateLoading=!1}}async function ne(){a.exportLoading=!0;try{const o={page:1,pageSize:1e4};r.userId&&(o.userId=Number(r.userId)),r.status!==void 0&&(o.status=r.status),r.startDate&&(o.startDate=r.startDate),r.endDate&&(o.endDate=r.endDate);const t=await xe(o),n=t.data instanceof Blob?t.data:new Blob([t.data]),c=window.URL.createObjectURL(n),f=document.createElement("a");f.href=c,f.download=`测评记录_${new Date().toISOString().slice(0,10)}.xlsx`,document.body.appendChild(f),f.click(),document.body.removeChild(f),window.URL.revokeObjectURL(c),w.success("导出成功")}catch(o){const t=o instanceof Error?o.message:"导出失败";w.error(t)}finally{a.exportLoading=!1}}return pe(()=>{v()}),(o,t)=>{const n=g("el-icon"),c=g("el-button"),f=g("el-card"),L=g("el-input"),x=g("el-form-item"),k=g("el-option"),se=g("el-select"),oe=g("el-date-picker"),ie=g("el-form"),u=g("el-table-column"),B=g("el-tag"),S=g("el-table"),re=g("el-pagination"),p=g("el-descriptions-item"),M=g("el-descriptions"),O=g("el-rate"),$=g("el-drawer"),z=me("loading");return h(),y("div",Le,[e(f,{class:"page-header"},{default:l(()=>[m("div",ze,[t[9]||(t[9]=m("div",{class:"header-left"},[m("h2",{class:"page-title"},"测评记录"),m("span",{class:"page-description"},"查看用户测评记录、答案详情和测评报告")],-1)),m("div",Te,[e(c,{type:"warning",onClick:le,loading:a.batchRegenerateLoading},{default:l(()=>[e(n,null,{default:l(()=>[e(D(Y))]),_:1}),t[7]||(t[7]=d(" 批量重新生成 ",-1))]),_:1},8,["loading"]),e(c,{type:"success",onClick:ne,loading:a.exportLoading},{default:l(()=>[e(n,null,{default:l(()=>[e(D(ge))]),_:1}),t[8]||(t[8]=d(" 导出Excel ",-1))]),_:1},8,["loading"])])])]),_:1}),e(f,{class:"search-card"},{default:l(()=>[e(ie,{model:r,inline:""},{default:l(()=>[e(x,{label:"用户ID"},{default:l(()=>[e(L,{modelValue:r.userId,"onUpdate:modelValue":t[0]||(t[0]=s=>r.userId=s),placeholder:"请输入用户ID",clearable:"",onKeyup:fe(U,["enter"])},null,8,["modelValue"])]),_:1}),e(x,{label:"状态"},{default:l(()=>[e(se,{modelValue:r.status,"onUpdate:modelValue":t[1]||(t[1]=s=>r.status=s),placeholder:"请选择状态",clearable:""},{default:l(()=>[e(k,{label:"待测评",value:1}),e(k,{label:"测评中",value:2}),e(k,{label:"生成中",value:3}),e(k,{label:"已完成",value:4}),e(k,{label:"生成失败",value:5})]),_:1},8,["modelValue"])]),_:1}),e(x,{label:"创建时间"},{default:l(()=>[e(oe,{modelValue:C.value,"onUpdate:modelValue":t[2]||(t[2]=s=>C.value=s),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",shortcuts:P,onChange:J},null,8,["modelValue"])]),_:1}),e(x,null,{default:l(()=>[e(c,{type:"primary",onClick:U},{default:l(()=>[e(n,null,{default:l(()=>[e(D(_e))]),_:1}),t[10]||(t[10]=d(" 搜索 ",-1))]),_:1}),e(c,{onClick:H},{default:l(()=>[e(n,null,{default:l(()=>[e(D(be))]),_:1}),t[11]||(t[11]=d(" 重置 ",-1))]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),T((h(),N(f,{class:"table-card"},{default:l(()=>[e(S,{data:a.tableData,"row-key":"id",stripe:"",onSelectionChange:te},{default:l(()=>[e(u,{type:"selection",width:"50"}),e(u,{prop:"id",label:"ID",width:"80"}),e(u,{label:"用户","min-width":"120"},{default:l(({row:s})=>[m("div",null,i(s.userNickname||"-"),1),m("div",Ne,"ID: "+i(s.userId),1)]),_:1}),e(u,{label:"被测评人","min-width":"120"},{default:l(({row:s})=>[m("div",null,i(s.name),1),m("div",Ie,i(s.phone),1)]),_:1}),e(u,{prop:"assessmentTypeName",label:"测评类型",width:"120","show-overflow-tooltip":""}),e(u,{label:"性别/年龄",width:"100",align:"center"},{default:l(({row:s})=>[d(i(s.genderName)+" / "+i(s.age)+"岁 ",1)]),_:1}),e(u,{prop:"educationStageName",label:"学历阶段",width:"110",align:"center"}),e(u,{label:"地区","min-width":"130","show-overflow-tooltip":""},{default:l(({row:s})=>[d(i(s.province)+i(s.city)+i(s.district),1)]),_:1}),e(u,{label:"状态",width:"90",align:"center"},{default:l(({row:s})=>[e(B,{type:E(s.status),size:"small"},{default:l(()=>[d(i(s.statusName),1)]),_:2},1032,["type"])]),_:1}),e(u,{prop:"orderNo",label:"订单号",width:"170","show-overflow-tooltip":""}),e(u,{prop:"submitTime",label:"提交时间",width:"170",align:"center"},{default:l(({row:s})=>[d(i(s.submitTime||"-"),1)]),_:1}),e(u,{prop:"createTime",label:"创建时间",width:"170",align:"center"}),e(u,{label:"操作",width:"230",fixed:"right",align:"center"},{default:l(({row:s})=>[e(c,{type:"primary",link:"",size:"small",onClick:b=>Z(s)},{default:l(()=>[e(n,null,{default:l(()=>[e(D(he))]),_:1}),t[12]||(t[12]=d(" 详情 ",-1))]),_:1},8,["onClick"]),s.status===4?(h(),N(c,{key:0,type:"success",link:"",size:"small",onClick:b=>ee(s)},{default:l(()=>[e(n,null,{default:l(()=>[e(D(we))]),_:1}),t[13]||(t[13]=d(" 报告 ",-1))]),_:1},8,["onClick"])):R("",!0),s.status===3||s.status===5?(h(),N(c,{key:1,type:"warning",link:"",size:"small",onClick:b=>ae(s)},{default:l(()=>[e(n,null,{default:l(()=>[e(D(Y))]),_:1}),t[14]||(t[14]=d(" 重新生成 ",-1))]),_:1},8,["onClick"])):R("",!0)]),_:1})]),_:1},8,["data"]),m("div",Ee,[e(re,{"current-page":r.page,"onUpdate:currentPage":t[3]||(t[3]=s=>r.page=s),"page-size":r.pageSize,"onUpdate:pageSize":t[4]||(t[4]=s=>r.pageSize=s),"page-sizes":[10,20,50,100],total:a.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:W,onCurrentChange:X},null,8,["current-page","page-size","total"])])]),_:1})),[[z,a.loading]]),e($,{modelValue:a.detailVisible,"onUpdate:modelValue":t[5]||(t[5]=s=>a.detailVisible=s),title:"测评记录详情",size:"100%","close-on-click-modal":!0},{default:l(()=>[T((h(),y("div",Ue,[a.detail?(h(),y(I,{key:0},[m("div",Be,[t[15]||(t[15]=m("h4",{class:"section-title"},"基本信息",-1)),e(M,{column:4,border:"",size:"small"},{default:l(()=>[e(p,{label:"被测评人"},{default:l(()=>[d(i(a.detail.name),1)]),_:1}),e(p,{label:"手机号"},{default:l(()=>[d(i(a.detail.phone),1)]),_:1}),e(p,{label:"性别"},{default:l(()=>[d(i(a.detail.genderName),1)]),_:1}),e(p,{label:"年龄"},{default:l(()=>[d(i(a.detail.age)+"岁",1)]),_:1}),e(p,{label:"学历阶段"},{default:l(()=>[d(i(a.detail.educationStageName),1)]),_:1}),e(p,{label:"地区"},{default:l(()=>[d(i(a.detail.province)+i(a.detail.city)+i(a.detail.district),1)]),_:1}),e(p,{label:"测评类型"},{default:l(()=>[d(i(a.detail.assessmentTypeName),1)]),_:1}),e(p,{label:"状态"},{default:l(()=>[e(B,{type:E(a.detail.status),size:"small"},{default:l(()=>[d(i(a.detail.statusName),1)]),_:1},8,["type"])]),_:1}),e(p,{label:"订单号",span:2},{default:l(()=>[d(i(a.detail.orderNo||"-"),1)]),_:1}),e(p,{label:"开始时间"},{default:l(()=>[d(i(a.detail.startTime||"-"),1)]),_:1}),e(p,{label:"提交时间"},{default:l(()=>[d(i(a.detail.submitTime||"-"),1)]),_:1}),e(p,{label:"完成时间"},{default:l(()=>[d(i(a.detail.completeTime||"-"),1)]),_:1}),e(p,{label:"创建时间"},{default:l(()=>[d(i(a.detail.createTime),1)]),_:1})]),_:1})]),a.detail.answers&&a.detail.answers.length>0?(h(),y("div",Me,[m("h4",Oe,"答题列表(共"+i(a.detail.answers.length)+"题)",1),e(S,{data:a.detail.answers,stripe:"",size:"small","max-height":"400"},{default:l(()=>[e(u,{prop:"questionNo",label:"题号",width:"60",align:"center"}),e(u,{prop:"questionContent",label:"题目内容","min-width":"250","show-overflow-tooltip":""}),e(u,{label:"用户选项",width:"250",align:"center"},{default:l(({row:s})=>[m("span",null,i(F(s.answerValue))+"["+i(s.answerValue)+"]("+i(G(s.answerValue))+")",1)]),_:1})]),_:1},8,["data"])])):R("",!0),a.detail.results&&a.detail.results.length>0?(h(),y("div",$e,[t[16]||(t[16]=m("h4",{class:"section-title"},"测评结果",-1)),e(S,{data:a.detail.results,stripe:"",size:"small","max-height":"400"},{default:l(()=>[e(u,{prop:"categoryTypeName",label:"分类类型",width:"120"}),e(u,{prop:"categoryName",label:"分类名称","min-width":"120"}),e(u,{label:"得分",width:"100",align:"center"},{default:l(({row:s})=>[d(i(s.score)+" / "+i(s.maxScore),1)]),_:1}),e(u,{label:"百分比",width:"80",align:"center"},{default:l(({row:s})=>[d(i(s.percentage)+"% ",1)]),_:1}),e(u,{label:"星级",width:"130",align:"center"},{default:l(({row:s})=>[e(O,{modelValue:s.starLevel,"onUpdate:modelValue":b=>s.starLevel=b,disabled:""},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])):R("",!0)],64)):R("",!0)])),[[z,a.detailLoading]])]),_:1},8,["modelValue"]),e($,{modelValue:a.reportVisible,"onUpdate:modelValue":t[6]||(t[6]=s=>a.reportVisible=s),title:"测评报告",size:"100%","close-on-click-modal":!0},{default:l(()=>[T((h(),y("div",qe,[a.report?(h(),y(I,{key:0},[m("div",Ye,[t[17]||(t[17]=m("h4",{class:"section-title"},"被测评人信息",-1)),e(M,{column:3,border:""},{default:l(()=>[e(p,{label:"姓名"},{default:l(()=>[d(i(a.report.name),1)]),_:1}),e(p,{label:"性别"},{default:l(()=>[d(i(a.report.genderName),1)]),_:1}),e(p,{label:"年龄"},{default:l(()=>[d(i(a.report.age)+"岁",1)]),_:1}),e(p,{label:"学历阶段"},{default:l(()=>[d(i(a.report.educationStageName),1)]),_:1}),e(p,{label:"地区",span:2},{default:l(()=>[d(i(a.report.province)+i(a.report.city)+i(a.report.district),1)]),_:1})]),_:1})]),(h(!0),y(I,null,ye(a.report.resultGroups,s=>(h(),y("div",{key:s.categoryTypeId,class:"detail-section"},[m("h4",je,i(s.categoryTypeName),1),e(S,{data:s.items,stripe:"",size:"small"},{default:l(()=>[e(u,{prop:"categoryName",label:"分类","min-width":"120"}),e(u,{label:"得分",width:"100",align:"center"},{default:l(({row:b})=>[d(i(b.score)+" / "+i(b.maxScore),1)]),_:1}),e(u,{label:"百分比",width:"80",align:"center"},{default:l(({row:b})=>[d(i(b.percentage)+"% ",1)]),_:1}),e(u,{label:"星级",width:"130",align:"center"},{default:l(({row:b})=>[e(O,{modelValue:b.starLevel,"onUpdate:modelValue":de=>b.starLevel=de,disabled:""},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),e(u,{prop:"conclusionContent",label:"结论","min-width":"200","show-overflow-tooltip":""})]),_:1},8,["data"])]))),128))],64)):R("",!0)])),[[z,a.reportLoading]])]),_:1},8,["modelValue"])])}}}),Ke=ve(Pe,[["__scopeId","data-v-e9621c38"]]);export{Ke as default};
|