- 新增api目录下多个接口路径代理处理文件,支持动态拼接目标URL - 根据环境变量选择不同的后端服务地址(如dev和生产环境) - 统一添加TenantId和Authorization请求头传递租户及身份信息 - 实现请求参数及搜索参数的完整转发 - 引入better-sqlite3及node内建模块支持服务端功能 - 新增专家详情页面,实现文章、成果及预约咨询功能展示 - 页面实现加载骨架屏、标签页切换及空状态提示优化体验
2 lines
7.3 KiB
JavaScript
2 lines
7.3 KiB
JavaScript
import{d as le,H as oe,i as y,s as Q,v as R,j as ie,c as p,a as d,b as s,w as t,m as n,a2 as V,p as x,r as _,o as c,e as i,R as ue,F as $,f as U,A as E,z as re,t as o,l as v,g as de}from"./DPwbf7XO.js";const ce={class:"experts-page"},pe={class:"page-header"},_e=["onClick"],ve={class:"stat-icon"},fe={class:"stat-info"},me={class:"stat-value"},ge={class:"stat-label"},he={class:"panel"},ke={class:"panel-header"},ye={key:0,class:"expert-info-cell"},be={class:"expert-avatar"},we={class:"expert-info-text"},xe={class:"expert-name"},Ce={class:"expert-meta"},ze={key:0},Se={key:1,class:"meta-item"},Te={key:1,class:"contact-cell"},Ae={key:0},Ee={key:1},Re={key:3,class:"text-sm text-gray"},Ve={key:0,class:"attachments-section"},$e={class:"attachment-list"},Be=["href"],Ne={key:1,class:"review-actions"},Fe=le({__name:"index",setup(Je){oe({title:"专家管理 - 后台管理"});const C=y(!1),b=y([]),h=y(void 0),z=y(""),f=Q({current:1,pageSize:20,showSizeChanger:!0,showQuickJumper:!0}),w=Q([{key:0,icon:"⏳",label:"待审核",value:0,color:"orange"},{key:1,icon:"✅",label:"已认证",value:0,color:"green"},{key:2,icon:"❌",label:"已拒绝",value:0,color:"red"},{key:-1,icon:"👥",label:"全部专家",value:0,color:"blue"}]),j=[{title:"专家信息",key:"info",width:280},{title:"联系方式",key:"contact",width:200},{title:"状态",key:"status",width:100},{title:"申请时间",key:"createTime",width:120},{title:"操作",key:"action",width:120}],k=y(!1),u=y(null),B=R(()=>{const a=z.value.trim().toLowerCase();return b.value.filter(e=>h.value===void 0||e.status===h.value).filter(e=>a?[e.name,e.organization,e.researchArea].some(g=>String(g||"").toLowerCase().includes(a)):!0).sort((e,g)=>(g.id||0)-(e.id||0))}),D=R(()=>{const a=(f.current-1)*f.pageSize;return B.value.slice(a,a+f.pageSize)}),H=R(()=>({current:f.current,pageSize:f.pageSize,total:B.value.length,showSizeChanger:f.showSizeChanger,showQuickJumper:f.showQuickJumper}));function M(){w[0].value=b.value.filter(a=>a.status===0).length,w[1].value=b.value.filter(a=>a.status===1).length,w[2].value=b.value.filter(a=>a.status===2).length,w[3].value=b.value.length}async function S(){C.value=!0;try{M()}catch(a){x.error(a?.message||"加载专家列表失败")}finally{C.value=!1}}function I(a){h.value=a===-1?void 0:a,f.current=1}function N(){f.current=1}function K(a){f.current=a.current,f.pageSize=a.pageSize}function O(a){u.value=a,k.value=!0}function P(a){u.value=a,k.value=!0}async function q(a){try{x.success("已通过审核"),k.value=!1,await S()}catch(e){x.error(e?.message||"操作失败")}}async function G(a){try{x.success("已拒绝"),k.value=!1,await S()}catch(e){x.error(e?.message||"操作失败")}}function F(a){return{0:"待审核",1:"已认证",2:"已拒绝"}[a??-1]||"-"}function J(a){return{0:"orange",1:"success",2:"error"}[a??-1]||"default"}return ie(()=>{S()}),(a,e)=>{const g=_("a-button"),T=_("a-space"),W=_("a-col"),X=_("a-row"),A=_("a-select-option"),Y=_("a-select"),Z=_("a-input-search"),L=_("a-tag"),ee=_("a-table"),m=_("a-descriptions-item"),te=_("a-descriptions"),ae=_("a-divider"),se=_("a-modal");return c(),p("div",ce,[d("div",pe,[e[6]||(e[6]=d("div",null,[d("h2",{class:"page-title"},"🎓 专家管理"),d("p",{class:"page-desc"},"管理平台认证专家信息,支持专家审核与状态管理")],-1)),s(T,null,{default:t(()=>[s(g,{onClick:S,loading:n(C)},{icon:t(()=>[s(n(ue))]),default:t(()=>[e[5]||(e[5]=i(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),s(X,{gutter:[16,16],class:"mb-6"},{default:t(()=>[(c(!0),p($,null,U(n(w),l=>(c(),E(W,{xs:12,sm:6,key:l.key},{default:t(()=>[d("div",{class:re(["stat-card",[l.color,{active:n(h)===l.key}]]),onClick:r=>I(l.key)},[d("div",ve,o(l.icon),1),d("div",fe,[d("div",me,o(l.value),1),d("div",ge,o(l.label),1)])],10,_e)]),_:2},1024))),128))]),_:1}),d("div",he,[d("div",ke,[e[11]||(e[11]=d("span",{class:"panel-title"},"📋 专家列表",-1)),s(T,{wrap:""},{default:t(()=>[s(Y,{value:n(h),"onUpdate:value":e[0]||(e[0]=l=>V(h)?h.value=l:null),style:{width:"120px"},onChange:N},{default:t(()=>[s(A,{value:void 0},{default:t(()=>[...e[7]||(e[7]=[i("全部状态",-1)])]),_:1}),s(A,{value:0},{default:t(()=>[...e[8]||(e[8]=[i("待审核",-1)])]),_:1}),s(A,{value:1},{default:t(()=>[...e[9]||(e[9]=[i("已认证",-1)])]),_:1}),s(A,{value:2},{default:t(()=>[...e[10]||(e[10]=[i("已拒绝",-1)])]),_:1})]),_:1},8,["value"]),s(Z,{value:n(z),"onUpdate:value":e[1]||(e[1]=l=>V(z)?z.value=l:null),placeholder:"搜索姓名 / 单位 / 研究领域",style:{width:"240px"},onSearch:N},null,8,["value"])]),_:1})]),s(ee,{columns:j,"data-source":n(D),loading:n(C),pagination:n(H),"row-key":"id",onChange:K,size:"middle"},{bodyCell:t(({column:l,record:r})=>[l.key==="info"?(c(),p("div",ye,[d("div",be,o(r.name?.charAt(0)||"?"),1),d("div",we,[d("div",xe,o(r.name),1),d("div",Ce,[r.title?(c(),p("span",ze,"🏷️ "+o(r.title),1)):v("",!0),r.organization?(c(),p("span",Se,"🏛️ "+o(r.organization),1)):v("",!0)])])])):v("",!0),l.key==="contact"?(c(),p("div",Te,[r.email?(c(),p("div",Ae,"📧 "+o(r.email),1)):v("",!0),r.phone?(c(),p("div",Ee,"📱 "+o(r.phone),1)):v("",!0)])):v("",!0),l.key==="status"?(c(),E(L,{key:2,color:J(r.status)},{default:t(()=>[i(o(F(r.status)),1)]),_:2},1032,["color"])):v("",!0),l.key==="createTime"?(c(),p("span",Re,o(r.createTime?.substring(0,10)||"-"),1)):v("",!0),l.key==="action"?(c(),E(T,{key:4},{default:t(()=>[s(g,{type:"link",size:"small",onClick:ne=>O(r)},{default:t(()=>[...e[12]||(e[12]=[i("查看",-1)])]),_:1},8,["onClick"]),r.status===0?(c(),E(g,{key:0,type:"link",size:"small",onClick:ne=>P(r)},{default:t(()=>[...e[13]||(e[13]=[i("审核",-1)])]),_:1},8,["onClick"])):v("",!0)]),_:2},1024)):v("",!0)]),_:1},8,["data-source","loading","pagination"])]),s(se,{open:n(k),"onUpdate:open":e[4]||(e[4]=l=>V(k)?k.value=l:null),title:"专家详情",width:"700px",footer:null},{default:t(()=>[n(u)?(c(),p($,{key:0},[s(te,{column:2,bordered:"",size:"small"},{default:t(()=>[s(m,{label:"姓名"},{default:t(()=>[i(o(n(u).name),1)]),_:1}),s(m,{label:"职称"},{default:t(()=>[i(o(n(u).title||"-"),1)]),_:1}),s(m,{label:"单位"},{default:t(()=>[i(o(n(u).organization||"-"),1)]),_:1}),s(m,{label:"研究领域"},{default:t(()=>[i(o(n(u).researchArea||"-"),1)]),_:1}),s(m,{label:"邮箱"},{default:t(()=>[i(o(n(u).email||"-"),1)]),_:1}),s(m,{label:"电话"},{default:t(()=>[i(o(n(u).phone||"-"),1)]),_:1}),s(m,{label:"状态"},{default:t(()=>[s(L,{color:J(n(u).status)},{default:t(()=>[i(o(F(n(u).status)),1)]),_:1},8,["color"])]),_:1}),s(m,{label:"申请时间"},{default:t(()=>[i(o(n(u).createTime?.substring(0,10)||"-"),1)]),_:1}),s(m,{label:"个人简介",span:2},{default:t(()=>[i(o(n(u).bio||"-"),1)]),_:1}),s(m,{label:"研究成果",span:2},{default:t(()=>[i(o(n(u).achievements||"-"),1)]),_:1})]),_:1}),n(u).attachments?.length?(c(),p("div",Ve,[e[14]||(e[14]=d("h4",null,"附件材料",-1)),d("div",$e,[(c(!0),p($,null,U(n(u).attachments,(l,r)=>(c(),p("a",{key:r,href:l.url,target:"_blank"}," 📎 "+o(l.name),9,Be))),128))])])):v("",!0),n(u).status===0?(c(),p("div",Ne,[s(ae),s(T,null,{default:t(()=>[s(g,{type:"primary",onClick:e[2]||(e[2]=l=>q(n(u)))},{default:t(()=>[...e[15]||(e[15]=[i("通过审核",-1)])]),_:1}),s(g,{danger:"",onClick:e[3]||(e[3]=l=>G(n(u)))},{default:t(()=>[...e[16]||(e[16]=[i("拒绝",-1)])]),_:1})]),_:1})])):v("",!0)],64)):v("",!0)]),_:1},8,["open"])])}}}),Qe=de(Fe,[["__scopeId","data-v-cade93fa"]]);export{Qe as default};
|