- 新增api目录下多个接口路径代理处理文件,支持动态拼接目标URL - 根据环境变量选择不同的后端服务地址(如dev和生产环境) - 统一添加TenantId和Authorization请求头传递租户及身份信息 - 实现请求参数及搜索参数的完整转发 - 引入better-sqlite3及node内建模块支持服务端功能 - 新增专家详情页面,实现文章、成果及预约咨询功能展示 - 页面实现加载骨架屏、标签页切换及空状态提示优化体验
2 lines
8.8 KiB
JavaScript
2 lines
8.8 KiB
JavaScript
import{d as te,H as ae,i as c,s as se,v as ne,j as le,c as R,a as _,b as t,t as w,m as n,w as a,a2 as oe,r as u,o as p,e as d,a9 as ue,l as v,A as C,p as k,G as ie,g as re}from"./DPwbf7XO.js";const de={class:"admin-categories"},me={class:"toolbar"},ce={class:"toolbar-left"},pe={class:"total-count"},fe={class:"table-card"},ye={key:0,class:"category-name"},ge=te({__name:"categories",setup(_e){ae({title:"栏目管理"});const b=c(!1),S=c(!1),m=c(!1),f=c(null),x=c(),I=c(0),o=se({parentId:void 0,name:"",slug:"",sort:0,description:"",cover:"",status:1,memberOnly:!1}),V={name:[{required:!0,message:"请输入栏目名称"}],slug:[{required:!0,message:"请输入栏目标识"}]},j=[{title:"栏目名称",key:"name",dataIndex:"name"},{title:"标识",dataIndex:"slug",key:"slug"},{title:"类型",key:"type"},{title:"排序",dataIndex:"sort",key:"sort",width:80},{title:"状态",key:"status",width:100},{title:"文章数",key:"articleCount",width:120},{title:"操作",key:"action",width:220}],O=c([{id:1,name:"政策要闻",slug:"news",sort:1,status:1,articleCount:128,isSystem:!0,children:[{id:11,name:"党中央国务院信息",slug:"news-central",sort:1,status:1,articleCount:42,isSystem:!0},{id:12,name:"自治区党委政府信息",slug:"news-region",sort:2,status:1,articleCount:35,isSystem:!0},{id:13,name:"其他厅委办信息",slug:"news-department",sort:3,status:1,articleCount:29,isSystem:!0},{id:14,name:"最新发布",slug:"news-latest",sort:4,status:1,articleCount:22,isSystem:!0}]},{id:2,name:"决策咨询",slug:"consultation",sort:2,status:1,articleCount:96,isSystem:!0,children:[{id:21,name:"市县决策",slug:"consult-city",sort:1,status:1,articleCount:18,isSystem:!0},{id:22,name:"前沿观察",slug:"consult-frontier",sort:2,status:1,articleCount:15,isSystem:!0},{id:23,name:"行业资讯",slug:"consult-industry",sort:3,status:1,articleCount:20,isSystem:!0},{id:24,name:"企业动态",slug:"consult-enterprise",sort:4,status:1,articleCount:12,isSystem:!0},{id:25,name:"研究热点",slug:"consult-research",sort:5,status:1,articleCount:14,isSystem:!0},{id:26,name:"学术活动",slug:"consult-academic",sort:6,status:1,articleCount:10,isSystem:!0},{id:27,name:"其他汇编",slug:"consult-other",sort:7,status:1,articleCount:7,isSystem:!0}]},{id:3,name:"决策参考",slug:"reference",sort:3,status:1,articleCount:75,isSystem:!0,children:[{id:31,name:"政策原文",slug:"ref-policy",sort:1,status:1,articleCount:20,isSystem:!0},{id:32,name:"深度解读",slug:"ref-analysis",sort:2,status:1,articleCount:15,isSystem:!0},{id:33,name:"研究成果",slug:"ref-research",sort:3,status:1,articleCount:18,isSystem:!0},{id:34,name:"专题研究",slug:"ref-special",sort:4,status:1,articleCount:12,isSystem:!0},{id:35,name:"东盟研究",slug:"ref-asean",sort:5,status:1,articleCount:8,isSystem:!0},{id:36,name:"数据服务",slug:"ref-data",sort:6,status:1,articleCount:2,isSystem:!0}]},{id:4,name:"专家资讯",slug:"expert",sort:4,status:1,articleCount:52,isSystem:!0},{id:5,name:"智库观察",slug:"think-tank",sort:5,status:1,articleCount:38,isSystem:!0,children:[{id:51,name:"智库介绍",slug:"thinktank-intro",sort:1,status:1,articleCount:16,isSystem:!0},{id:52,name:"智库视角",slug:"thinktank-view",sort:2,status:1,articleCount:22,isSystem:!0}]},{id:6,name:"建言献策",slug:"suggestions",sort:6,status:1,articleCount:0,isSystem:!0},{id:7,name:"翰墨文谈",slug:"hanmo",sort:7,status:1,articleCount:24,isSystem:!0},{id:8,name:"关于我们",slug:"about",sort:8,status:1,articleCount:5,isSystem:!0}]),z=ne(()=>O.value.map(s=>({id:s.id,name:s.name,children:s.children})));function A(){f.value=null,Object.assign(o,{parentId:void 0,name:"",slug:"",sort:0,description:"",cover:"",status:1,memberOnly:!1}),m.value=!0}function B(s){f.value=null,Object.assign(o,{parentId:s.id,name:"",slug:"",sort:0,description:"",cover:"",status:1,memberOnly:!1}),m.value=!0}function N(s){f.value=s,Object.assign(o,{parentId:s.parentId,name:s.name,slug:s.slug,sort:s.sort,description:s.description||"",cover:s.cover||"",status:s.status,memberOnly:s.memberOnly||!1}),m.value=!0}async function q(){try{await x.value?.validate(),S.value=!0,k.success(f.value?"栏目更新成功":"栏目创建成功"),m.value=!1}catch(s){if(s?.errorFields)return;k.error(s?.message||"操作失败")}finally{S.value=!1}}async function E(s){try{k.success("栏目已删除"),F()}catch(e){k.error(e?.message||"删除失败")}}function H(s,e){s.status=e?1:0,k.success(`栏目"${s.name}"已${e?"显示":"隐藏"}`)}function T(s){ie(`/admin/articles?categoryId=${s.id}`)}async function F(){b.value=!0,b.value=!1}return le(()=>{I.value=8}),(s,e)=>{const y=u("a-button"),G=u("a-tag"),U=u("a-switch"),L=u("a-badge"),M=u("a-popconfirm"),P=u("a-space"),J=u("a-table"),K=u("a-tree-select"),r=u("a-form-item"),h=u("a-input"),$=u("a-col"),Q=u("a-input-number"),W=u("a-row"),X=u("a-textarea"),D=u("a-radio"),Y=u("a-radio-group"),Z=u("a-form"),ee=u("a-modal");return p(),R("div",de,[_("div",me,[_("div",ce,[e[9]||(e[9]=_("h3",{class:"page-title"},"栏目管理",-1)),_("span",pe,"共 "+w(n(I))+" 个栏目",1)]),t(y,{type:"primary",onClick:A},{icon:a(()=>[t(n(ue))]),default:a(()=>[e[10]||(e[10]=d(" 新增栏目 ",-1))]),_:1})]),_("div",fe,[t(J,{columns:j,"data-source":n(O),loading:n(b),"row-key":"id",pagination:!1,"expand-row-by-click":!0},{bodyCell:a(({column:l,record:i})=>[l.key==="name"?(p(),R("span",ye,w(i.name),1)):v("",!0),l.key==="type"?(p(),C(G,{key:1,color:i.isSystem?"blue":"default"},{default:a(()=>[d(w(i.isSystem?"系统栏目":"自定义"),1)]),_:2},1032,["color"])):v("",!0),l.key==="status"?(p(),C(U,{key:2,checked:i.status===1,onChange:g=>H(i,g),"checked-children":"显示","un-checked-children":"隐藏"},null,8,["checked","onChange"])):v("",!0),l.key==="articleCount"?(p(),C(L,{key:3,count:i.articleCount,"overflow-count":999},{default:a(()=>[t(y,{size:"small",onClick:g=>T(i)},{default:a(()=>[...e[11]||(e[11]=[d("查看文章",-1)])]),_:1},8,["onClick"])]),_:2},1032,["count"])):v("",!0),l.key==="action"?(p(),C(P,{key:4},{default:a(()=>[t(y,{size:"small",onClick:g=>N(i)},{default:a(()=>[...e[12]||(e[12]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(y,{size:"small",onClick:g=>B(i),type:"dashed"},{default:a(()=>[...e[13]||(e[13]=[d("添加子栏目",-1)])]),_:1},8,["onClick"]),t(M,{title:`确定删除栏目「${i.name}」吗?此操作不可恢复!`,onConfirm:g=>E(i),"ok-text":"确定","cancel-text":"取消"},{default:a(()=>[t(y,{size:"small",danger:"",disabled:i.isSystem},{default:a(()=>[...e[14]||(e[14]=[d("删除",-1)])]),_:1},8,["disabled"])]),_:2},1032,["title","onConfirm"])]),_:2},1024)):v("",!0)]),_:1},8,["data-source","loading"])]),t(ee,{open:n(m),"onUpdate:open":e[8]||(e[8]=l=>oe(m)?m.value=l:null),title:n(f)?"编辑栏目":"新增栏目",onOk:q,"confirm-loading":n(S),width:"600px"},{default:a(()=>[t(Z,{model:n(o),rules:V,ref_key:"formRef",ref:x,layout:"vertical"},{default:a(()=>[t(r,{label:"上级栏目",name:"parentId"},{default:a(()=>[t(K,{value:n(o).parentId,"onUpdate:value":e[0]||(e[0]=l=>n(o).parentId=l),"tree-data":n(z),"field-names":{label:"name",value:"id",children:"children"},placeholder:"选择上级栏目(不选则为一级)","allow-clear":"","tree-default-expand-all":""},null,8,["value","tree-data"])]),_:1}),t(r,{label:"栏目名称",name:"name"},{default:a(()=>[t(h,{value:n(o).name,"onUpdate:value":e[1]||(e[1]=l=>n(o).name=l),placeholder:"请输入栏目名称",maxlength:50,"show-count":""},null,8,["value"])]),_:1}),t(W,{gutter:16},{default:a(()=>[t($,{span:12},{default:a(()=>[t(r,{label:"栏目标识(英文)",name:"slug"},{default:a(()=>[t(h,{value:n(o).slug,"onUpdate:value":e[2]||(e[2]=l=>n(o).slug=l),placeholder:"如 news / policy"},null,8,["value"])]),_:1})]),_:1}),t($,{span:12},{default:a(()=>[t(r,{label:"排序权重",name:"sort"},{default:a(()=>[t(Q,{value:n(o).sort,"onUpdate:value":e[3]||(e[3]=l=>n(o).sort=l),min:0,max:9999,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),t(r,{label:"栏目描述",name:"description"},{default:a(()=>[t(X,{value:n(o).description,"onUpdate:value":e[4]||(e[4]=l=>n(o).description=l),rows:3,placeholder:"请输入栏目描述"},null,8,["value"])]),_:1}),t(r,{label:"封面图",name:"cover"},{default:a(()=>[t(h,{value:n(o).cover,"onUpdate:value":e[5]||(e[5]=l=>n(o).cover=l),placeholder:"封面图URL"},null,8,["value"])]),_:1}),t(r,{label:"状态",name:"status"},{default:a(()=>[t(Y,{value:n(o).status,"onUpdate:value":e[6]||(e[6]=l=>n(o).status=l)},{default:a(()=>[t(D,{value:1},{default:a(()=>[...e[15]||(e[15]=[d("显示",-1)])]),_:1}),t(D,{value:0},{default:a(()=>[...e[16]||(e[16]=[d("隐藏",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(r,{label:"是否需要会员权限",name:"memberOnly"},{default:a(()=>[t(U,{checked:n(o).memberOnly,"onUpdate:checked":e[7]||(e[7]=l=>n(o).memberOnly=l),"checked-children":"需要","un-checked-children":"不需要"},null,8,["checked"])]),_:1})]),_:1},8,["model"])]),_:1},8,["open","title","confirm-loading"])])}}}),ke=re(ge,[["__scopeId","data-v-44a33989"]]);export{ke as default};
|