- 新增api目录下多个接口路径代理处理文件,支持动态拼接目标URL - 根据环境变量选择不同的后端服务地址(如dev和生产环境) - 统一添加TenantId和Authorization请求头传递租户及身份信息 - 实现请求参数及搜索参数的完整转发 - 引入better-sqlite3及node内建模块支持服务端功能 - 新增专家详情页面,实现文章、成果及预约咨询功能展示 - 页面实现加载骨架屏、标签页切换及空状态提示优化体验
2 lines
7.9 KiB
JavaScript
2 lines
7.9 KiB
JavaScript
import{d as te,H as ae,i as m,s as ne,j as le,c as z,a as v,b as a,t as u,m as n,w as t,a2 as U,r,o as _,e as l,l as C,A as S,F as oe,p as w,g as se}from"./DPwbf7XO.js";const ie={class:"admin-experts-review"},ue={class:"page-header"},de={class:"pending-count"},re={class:"filter-bar"},pe={class:"table-card"},me={key:0,class:"applicant-info"},fe={class:"applicant-detail"},ve={class:"applicant-name"},_e={class:"applicant-org"},ce={key:0,class:"detail-content"},ge={class:"materials-section",style:{"margin-top":"16px"}},ye={key:0,class:"action-area",style:{"margin-top":"16px"}},ke=te({__name:"review",setup(Ce){ae({title:"专家审核"});const M=m(!1),R=m(!1),b=m(!1),c=m(!1),x=m(""),o=m(null),$=m(3),B=m(0),I=m(1),O=m(15),j=ne({keyword:"",status:""}),G=[{title:"申请人",key:"applicant",width:200},{title:"职称",dataIndex:"title",key:"title"},{title:"研究领域",dataIndex:"researchArea",key:"researchArea"},{title:"申请时间",dataIndex:"applyTime",key:"applyTime",width:150},{title:"状态",key:"status",width:100},{title:"材料",key:"materials",width:160},{title:"操作",key:"action",width:160}],N=m([{id:1,name:"张某某",avatar:"",organization:"广西大学",title:"教授",researchArea:"区域经济",education:"博士",phone:"138****0001",email:"zhang@gxu.edu.cn",intro:"长期从事区域经济研究...",applyTime:"2024-12-18 10:30",status:"pending"},{id:2,name:"李某某",avatar:"",organization:"广西社科院",title:"研究员",researchArea:"产业政策",education:"博士",phone:"139****0002",email:"li@gxss.org",intro:"专注产业政策研究...",applyTime:"2024-12-17 15:00",status:"pending"},{id:3,name:"王某某",avatar:"",organization:"广西师范大学",title:"副教授",researchArea:"金融经济",education:"博士",phone:"137****0003",email:"wang@gxnu.edu.cn",intro:"从事金融经济研究...",applyTime:"2024-12-15 09:00",status:"approved"}]);function V(i){return{pending:"orange",approved:"green",rejected:"red"}[i]||"default"}function D(i){return{pending:"待审核",approved:"已通过",rejected:"已拒绝"}[i]||i}async function F(i){try{i.status="approved",$.value=Math.max(0,$.value-1),w.success(`已通过 ${i.name} 的专家申请`)}catch(e){w.error(e?.message||"操作失败")}}function P(i){o.value=i,x.value="",b.value=!0}async function J(){if(!x.value.trim()){w.warning("请填写拒绝原因");return}R.value=!0;try{o.value.status="rejected",$.value=Math.max(0,$.value-1),w.success("已拒绝申请并通知申请人"),b.value=!1}catch(i){w.error(i?.message||"操作失败")}finally{R.value=!1}}function E(i){o.value=i,c.value=!0}function g(i,e){w.info(`预览 ${i.name} 的${e==="resume"?"简历":e==="id"?"身份证":"证书"}材料`)}function K(i){I.value=i,A()}async function A(){M.value=!0,M.value=!1}return le(()=>{B.value=N.value.length}),(i,e)=>{const L=r("a-input"),T=r("a-select-option"),Q=r("a-select"),p=r("a-button"),y=r("a-space"),W=r("a-avatar"),H=r("a-tag"),X=r("a-table"),Y=r("a-textarea"),Z=r("a-form-item"),h=r("a-form"),q=r("a-modal"),f=r("a-descriptions-item"),ee=r("a-descriptions");return _(),z("div",ie,[v("div",ue,[e[10]||(e[10]=v("h3",null,"专家审核",-1)),v("span",de,"待审核:"+u(n($))+" 人",1)]),v("div",re,[a(y,{wrap:""},{default:t(()=>[a(L,{value:n(j).keyword,"onUpdate:value":e[0]||(e[0]=s=>n(j).keyword=s),placeholder:"搜索专家姓名/单位","allow-clear":"",style:{width:"200px"},onPressEnter:A},null,8,["value"]),a(Q,{value:n(j).status,"onUpdate:value":e[1]||(e[1]=s=>n(j).status=s),style:{width:"130px"},onChange:A},{default:t(()=>[a(T,{value:""},{default:t(()=>[...e[11]||(e[11]=[l("全部状态",-1)])]),_:1}),a(T,{value:"pending"},{default:t(()=>[...e[12]||(e[12]=[l("待审核",-1)])]),_:1}),a(T,{value:"approved"},{default:t(()=>[...e[13]||(e[13]=[l("已通过",-1)])]),_:1}),a(T,{value:"rejected"},{default:t(()=>[...e[14]||(e[14]=[l("已拒绝",-1)])]),_:1})]),_:1},8,["value"]),a(p,{type:"primary",onClick:A},{default:t(()=>[...e[15]||(e[15]=[l("搜索",-1)])]),_:1})]),_:1})]),v("div",pe,[a(X,{columns:G,"data-source":n(N),loading:n(M),"row-key":"id",pagination:{total:n(B),pageSize:n(O),current:n(I),onChange:K,showTotal:s=>`共 ${s} 条`}},{bodyCell:t(({column:s,record:d})=>[s.key==="applicant"?(_(),z("div",me,[a(W,{src:d.avatar,size:36},{default:t(()=>[l(u(d.name?.charAt(0)),1)]),_:2},1032,["src"]),v("div",fe,[v("div",ve,u(d.name),1),v("div",_e,u(d.organization),1)])])):C("",!0),s.key==="status"?(_(),S(H,{key:1,color:V(d.status)},{default:t(()=>[l(u(D(d.status)),1)]),_:2},1032,["color"])):C("",!0),s.key==="materials"?(_(),S(y,{key:2},{default:t(()=>[a(p,{size:"small",onClick:k=>g(d,"resume")},{default:t(()=>[...e[16]||(e[16]=[l("简历",-1)])]),_:1},8,["onClick"]),a(p,{size:"small",onClick:k=>g(d,"id")},{default:t(()=>[...e[17]||(e[17]=[l("身份证",-1)])]),_:1},8,["onClick"]),a(p,{size:"small",onClick:k=>g(d,"cert")},{default:t(()=>[...e[18]||(e[18]=[l("证书",-1)])]),_:1},8,["onClick"])]),_:2},1024)):C("",!0),s.key==="action"?(_(),z(oe,{key:3},[d.status==="pending"?(_(),S(y,{key:0},{default:t(()=>[a(p,{type:"primary",size:"small",onClick:k=>F(d)},{default:t(()=>[...e[19]||(e[19]=[l("通过",-1)])]),_:1},8,["onClick"]),a(p,{danger:"",size:"small",onClick:k=>P(d)},{default:t(()=>[...e[20]||(e[20]=[l("拒绝",-1)])]),_:1},8,["onClick"]),a(p,{size:"small",onClick:k=>E(d)},{default:t(()=>[...e[21]||(e[21]=[l("详情",-1)])]),_:1},8,["onClick"])]),_:2},1024)):(_(),S(y,{key:1},{default:t(()=>[a(p,{size:"small",onClick:k=>E(d)},{default:t(()=>[...e[22]||(e[22]=[l("详情",-1)])]),_:1},8,["onClick"])]),_:2},1024))],64)):C("",!0)]),_:1},8,["data-source","loading","pagination"])]),a(q,{open:n(b),"onUpdate:open":e[3]||(e[3]=s=>U(b)?b.value=s:null),title:"填写拒绝原因",onOk:J,"confirm-loading":n(R)},{default:t(()=>[a(h,{layout:"vertical"},{default:t(()=>[a(Z,{label:"拒绝原因",required:""},{default:t(()=>[a(Y,{value:n(x),"onUpdate:value":e[2]||(e[2]=s=>U(x)?x.value=s:null),rows:4,placeholder:"请说明拒绝原因(将通知申请人)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(q,{open:n(c),"onUpdate:open":e[9]||(e[9]=s=>U(c)?c.value=s:null),title:`${n(o)?.name} - 申请详情`,width:"700px",footer:null},{default:t(()=>[n(o)?(_(),z("div",ce,[a(ee,{bordered:"",column:2},{default:t(()=>[a(f,{label:"姓名"},{default:t(()=>[l(u(n(o).name),1)]),_:1}),a(f,{label:"职称"},{default:t(()=>[l(u(n(o).title),1)]),_:1}),a(f,{label:"所在单位"},{default:t(()=>[l(u(n(o).organization),1)]),_:1}),a(f,{label:"研究领域"},{default:t(()=>[l(u(n(o).researchArea),1)]),_:1}),a(f,{label:"学历"},{default:t(()=>[l(u(n(o).education),1)]),_:1}),a(f,{label:"联系电话"},{default:t(()=>[l(u(n(o).phone),1)]),_:1}),a(f,{label:"电子邮箱",span:2},{default:t(()=>[l(u(n(o).email),1)]),_:1}),a(f,{label:"个人简介",span:2},{default:t(()=>[l(u(n(o).intro),1)]),_:1}),a(f,{label:"申请时间"},{default:t(()=>[l(u(n(o).applyTime),1)]),_:1}),a(f,{label:"审核状态"},{default:t(()=>[a(H,{color:V(n(o).status)},{default:t(()=>[l(u(D(n(o).status)),1)]),_:1},8,["color"])]),_:1})]),_:1}),v("div",ge,[e[26]||(e[26]=v("h4",{style:{"margin-bottom":"12px"}},"申请材料",-1)),a(y,{wrap:""},{default:t(()=>[a(p,{icon:"📄",onClick:e[4]||(e[4]=s=>g(n(o),"resume"))},{default:t(()=>[...e[23]||(e[23]=[l("查看简历/研究成果",-1)])]),_:1}),a(p,{icon:"🪪",onClick:e[5]||(e[5]=s=>g(n(o),"id"))},{default:t(()=>[...e[24]||(e[24]=[l("查看身份证",-1)])]),_:1}),a(p,{icon:"🏆",onClick:e[6]||(e[6]=s=>g(n(o),"cert"))},{default:t(()=>[...e[25]||(e[25]=[l("查看职称证书/学历证书",-1)])]),_:1})]),_:1})]),n(o).status==="pending"?(_(),z("div",ye,[a(y,null,{default:t(()=>[a(p,{type:"primary",onClick:e[7]||(e[7]=s=>{F(n(o)),c.value=!1})},{default:t(()=>[...e[27]||(e[27]=[l("通过申请",-1)])]),_:1}),a(p,{danger:"",onClick:e[8]||(e[8]=s=>{P(n(o)),c.value=!1})},{default:t(()=>[...e[28]||(e[28]=[l("拒绝申请",-1)])]),_:1})]),_:1})])):C("",!0)])):C("",!0)]),_:1},8,["open","title"])])}}}),be=se(ke,[["__scopeId","data-v-8a6cbbff"]]);export{be as default};
|