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