From b0cea0f202154d9a5c1ca9cbc0fbe20b833010f3 Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Mon, 8 Jun 2026 16:37:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{AdminLayout-asHuu2ii.css => AdminLayout-36MHwY55.css} | 2 +- public/admin/assets/AdminLayout-BUb933pz.js | 1 + public/admin/assets/AdminLayout-CC6KcCF-.js | 1 - .../assets/{HomeView-BUDTA8VN.js => HomeView-BxwLAXqC.js} | 2 +- ...Dialog-CTPg22QM.js => TeacherDetailDialog-BEWCufF_.js} | 2 +- .../{activities-D4iXOHhe.js => activities-B_XgKYQ2.js} | 2 +- .../{activities-GFF4qxN4.js => activities-ByMS-EcA.js} | 2 +- .../assets/{assets-Bc1CNRVa.js => assets-CEyD64oq.js} | 2 +- .../{audit-logs-CoCCqT2_.js => audit-logs-DR4n46wf.js} | 2 +- public/admin/assets/banners--S0zPkC0.js | 1 - public/admin/assets/banners-CBylDnQD.js | 1 + .../assets/{courses-DrBUu0T_.js => courses-BzDRFiuu.js} | 6 +++--- .../assets/{courses-BmbVb4j4.js => courses-DjCB_SCT.js} | 2 +- .../assets/{crawler-pSJnvIAE.js => crawler-CMbJoTEv.js} | 2 +- .../{csv-export-CUhlQQMF.js => csv-export-BctnjsYJ.js} | 4 ++-- public/admin/assets/dashboard-BEZhsyUi.js | 1 - public/admin/assets/dashboard-DSewjGuL.js | 1 + .../assets/{demands-CD6Fn9-3.js => demands-CJyXU85f.js} | 2 +- .../assets/{demands-Y3WJHbEU.js => demands-H5Ve1ibc.js} | 2 +- .../admin/assets/{dict-CUGiftrt.js => dict-BFb6lz5T.js} | 2 +- .../admin/assets/{dict-fzIGWgYl.js => dict-Buu0be9B.js} | 2 +- ...{grid-members-DOmwCXow.js => grid-members-CgD89DKF.js} | 2 +- .../admin/assets/{index-CpW3rNmm.js => index-jhdMOnS8.js} | 4 ++-- .../admin/assets/{login-DinHOho3.js => login-k_jqOSXr.js} | 2 +- public/admin/assets/{map-CWMmhjPT.js => map-B4IBjHYg.js} | 2 +- .../admin/assets/{menus-DH3sShdF.js => menus-BPUM4ZDN.js} | 2 +- .../admin/assets/{menus-BH41zx8k.js => menus-BXR6sozD.js} | 2 +- .../admin/assets/{news-D2czBUi8.js => news-CNzDDJ66.js} | 2 +- .../admin/assets/{news-1w94bh7k.js => news-Cw3KnWmV.js} | 2 +- .../assets/{papers-BZR1zyUx.js => papers-CMzrDwSU.js} | 2 +- ...ctions-Ch1uxkZ7.js => research-directions-DG28ntk4.js} | 2 +- ...ctions-CSyn_hjA.js => research-directions-kSTdHLT1.js} | 2 +- .../admin/assets/{roles-CZECAG_Z.js => roles-BP2rQL9K.js} | 2 +- .../admin/assets/{roles-CszO6Q2s.js => roles-Comz1GWB.js} | 2 +- public/admin/assets/students-Bp5pX66c.js | 1 + public/admin/assets/students-D6wVp8RY.js | 1 - .../assets/{teachers-csfpCE52.js => teachers-BIk-0G3l.js} | 2 +- .../assets/{teachers-B94_8mpS.js => teachers-Bwiw24L3.js} | 2 +- public/admin/assets/universities-B4Qchbp4.js | 1 - public/admin/assets/universities-IRYCKaRU.js | 1 + .../assets/{upload-D5ZZkqqP.js => upload-DS3tvR-r.js} | 2 +- .../admin/assets/{users-B56SiWQw.js => users-BNovL_Kh.js} | 2 +- .../admin/assets/{users-CPtScr5l.js => users-BmmKms2A.js} | 2 +- public/admin/index.html | 2 +- routes/web.php | 8 ++++++++ 45 files changed, 51 insertions(+), 43 deletions(-) rename public/admin/assets/{AdminLayout-asHuu2ii.css => AdminLayout-36MHwY55.css} (56%) create mode 100644 public/admin/assets/AdminLayout-BUb933pz.js delete mode 100644 public/admin/assets/AdminLayout-CC6KcCF-.js rename public/admin/assets/{HomeView-BUDTA8VN.js => HomeView-BxwLAXqC.js} (94%) rename public/admin/assets/{TeacherDetailDialog-CTPg22QM.js => TeacherDetailDialog-BEWCufF_.js} (81%) rename public/admin/assets/{activities-D4iXOHhe.js => activities-B_XgKYQ2.js} (98%) rename public/admin/assets/{activities-GFF4qxN4.js => activities-ByMS-EcA.js} (91%) rename public/admin/assets/{assets-Bc1CNRVa.js => assets-CEyD64oq.js} (94%) rename public/admin/assets/{audit-logs-CoCCqT2_.js => audit-logs-DR4n46wf.js} (97%) delete mode 100644 public/admin/assets/banners--S0zPkC0.js create mode 100644 public/admin/assets/banners-CBylDnQD.js rename public/admin/assets/{courses-DrBUu0T_.js => courses-BzDRFiuu.js} (89%) rename public/admin/assets/{courses-BmbVb4j4.js => courses-DjCB_SCT.js} (91%) rename public/admin/assets/{crawler-pSJnvIAE.js => crawler-CMbJoTEv.js} (94%) rename public/admin/assets/{csv-export-CUhlQQMF.js => csv-export-BctnjsYJ.js} (99%) delete mode 100644 public/admin/assets/dashboard-BEZhsyUi.js create mode 100644 public/admin/assets/dashboard-DSewjGuL.js rename public/admin/assets/{demands-CD6Fn9-3.js => demands-CJyXU85f.js} (89%) rename public/admin/assets/{demands-Y3WJHbEU.js => demands-H5Ve1ibc.js} (84%) rename public/admin/assets/{dict-CUGiftrt.js => dict-BFb6lz5T.js} (92%) rename public/admin/assets/{dict-fzIGWgYl.js => dict-Buu0be9B.js} (72%) rename public/admin/assets/{grid-members-DOmwCXow.js => grid-members-CgD89DKF.js} (79%) rename public/admin/assets/{index-CpW3rNmm.js => index-jhdMOnS8.js} (99%) rename public/admin/assets/{login-DinHOho3.js => login-k_jqOSXr.js} (84%) rename public/admin/assets/{map-CWMmhjPT.js => map-B4IBjHYg.js} (86%) rename public/admin/assets/{menus-DH3sShdF.js => menus-BPUM4ZDN.js} (96%) rename public/admin/assets/{menus-BH41zx8k.js => menus-BXR6sozD.js} (81%) rename public/admin/assets/{news-D2czBUi8.js => news-CNzDDJ66.js} (82%) rename public/admin/assets/{news-1w94bh7k.js => news-Cw3KnWmV.js} (83%) rename public/admin/assets/{papers-BZR1zyUx.js => papers-CMzrDwSU.js} (81%) rename public/admin/assets/{research-directions-Ch1uxkZ7.js => research-directions-DG28ntk4.js} (88%) rename public/admin/assets/{research-directions-CSyn_hjA.js => research-directions-kSTdHLT1.js} (94%) rename public/admin/assets/{roles-CZECAG_Z.js => roles-BP2rQL9K.js} (77%) rename public/admin/assets/{roles-CszO6Q2s.js => roles-Comz1GWB.js} (74%) create mode 100644 public/admin/assets/students-Bp5pX66c.js delete mode 100644 public/admin/assets/students-D6wVp8RY.js rename public/admin/assets/{teachers-csfpCE52.js => teachers-BIk-0G3l.js} (94%) rename public/admin/assets/{teachers-B94_8mpS.js => teachers-Bwiw24L3.js} (93%) delete mode 100644 public/admin/assets/universities-B4Qchbp4.js create mode 100644 public/admin/assets/universities-IRYCKaRU.js rename public/admin/assets/{upload-D5ZZkqqP.js => upload-DS3tvR-r.js} (78%) rename public/admin/assets/{users-B56SiWQw.js => users-BNovL_Kh.js} (96%) rename public/admin/assets/{users-CPtScr5l.js => users-BmmKms2A.js} (83%) diff --git a/public/admin/assets/AdminLayout-asHuu2ii.css b/public/admin/assets/AdminLayout-36MHwY55.css similarity index 56% rename from public/admin/assets/AdminLayout-asHuu2ii.css rename to public/admin/assets/AdminLayout-36MHwY55.css index 36d8d10..9b78aac 100644 --- a/public/admin/assets/AdminLayout-asHuu2ii.css +++ b/public/admin/assets/AdminLayout-36MHwY55.css @@ -1 +1 @@ -.admin-layout[data-v-ebc16007]{height:100vh}.admin-layout[data-v-ebc16007] .layout-body{flex:1;min-height:0;overflow:hidden}.admin-layout[data-v-ebc16007] .layout-topbar.el-header{--el-header-height:52px;--el-header-padding:0 16px;--topbar-title-font-size:1rem;border-bottom:1px solid var(--slake-border);box-sizing:border-box;background:#fff;align-items:center;height:52px;padding:0 16px;display:flex}.brand[data-v-ebc16007]{font-weight:600;font-size:var(--topbar-title-font-size);color:#212529;letter-spacing:.02em;flex-shrink:0;line-height:1}.aside[data-v-ebc16007]{border-right:1px solid var(--slake-border);background:#fff;flex-direction:column;height:100%;display:flex;overflow:hidden}.menu[data-v-ebc16007]{border-right:none;flex:1;min-height:0;overflow-y:auto}.slake-menu[data-v-ebc16007] .el-menu-item{border-radius:6px;width:calc(100% - 16px);margin:0 8px 4px}.slake-menu[data-v-ebc16007] .el-sub-menu__title{border-radius:6px;margin:0 8px 4px}.slake-menu[data-v-ebc16007] .el-menu-item:hover,.slake-menu[data-v-ebc16007] .el-sub-menu__title:hover{color:var(--slake-brand)!important;background:#b11e230f!important}.slake-menu[data-v-ebc16007] .el-menu-item.is-active{color:#fff!important;background:var(--slake-brand)!important}.slake-menu[data-v-ebc16007] .el-sub-menu.is-active>.el-sub-menu__title{color:var(--slake-brand)!important}.spacer[data-v-ebc16007]{flex:1}.topbar-user[data-v-ebc16007] .user-link{cursor:pointer;font-size:var(--topbar-title-font-size);color:#212529;outline:none;align-items:center;gap:6px;font-weight:500;line-height:1;display:inline-flex}.topbar-user[data-v-ebc16007] .user-link:hover,.topbar-user[data-v-ebc16007] .user-link:focus{color:var(--slake-brand)}.topbar-user[data-v-ebc16007] .el-icon{font-size:var(--topbar-title-font-size)}.main[data-v-ebc16007]{background:var(--slake-bg-page);box-sizing:border-box;height:100%;padding:16px;overflow:auto}.admin-layout .layout-topbar .topbar-user .user-link{font-size:var(--topbar-title-font-size)!important;line-height:1!important}.el-overlay-dialog:has(.el-dialog.pwd-dialog){align-items:center}.el-overlay-dialog .el-dialog.pwd-dialog{flex-direction:column;align-self:center;width:480px;max-width:calc(100vw - 32px);display:flex;height:auto!important;max-height:none!important;margin:12vh auto 24px!important}.pwd-dialog .el-dialog__header{flex:none}.pwd-dialog .el-dialog__body{padding:12px 20px 4px;flex:none!important;min-height:0!important;overflow:visible!important}.pwd-dialog .el-dialog__footer{flex:none;padding:12px 20px 16px}.pwd-dialog-form .el-form-item{margin-bottom:14px}.pwd-dialog-form .el-form-item:last-child{margin-bottom:0}.pwd-dialog-form .el-form-item__label{white-space:nowrap;line-height:32px}.el-dropdown-menu__item.dropdown-logout{color:var(--slake-brand)!important} +.admin-layout[data-v-54fb5ddb]{height:100vh}.admin-layout[data-v-54fb5ddb] .layout-body{flex:1;min-height:0;overflow:hidden}.admin-layout[data-v-54fb5ddb] .layout-topbar.el-header{--el-header-height:52px;--el-header-padding:0 16px;--topbar-title-font-size:1rem;border-bottom:1px solid var(--slake-border);box-sizing:border-box;background:#fff;align-items:center;height:52px;padding:0 16px;display:flex}.brand[data-v-54fb5ddb]{font-weight:600;font-size:var(--topbar-title-font-size);color:#212529;letter-spacing:.02em;flex-shrink:0;line-height:1}.aside[data-v-54fb5ddb]{border-right:1px solid var(--slake-border);background:#fff;flex-direction:column;height:100%;display:flex;overflow:hidden}.menu[data-v-54fb5ddb]{border-right:none;flex:1;min-height:0;overflow-y:auto}.slake-menu[data-v-54fb5ddb] .el-menu-item{border-radius:6px;width:calc(100% - 16px);margin:0 8px 4px}.slake-menu[data-v-54fb5ddb] .el-sub-menu__title{border-radius:6px;margin:0 8px 4px}.slake-menu[data-v-54fb5ddb] .el-menu-item:hover,.slake-menu[data-v-54fb5ddb] .el-sub-menu__title:hover{color:var(--slake-brand)!important;background:#b11e230f!important}.slake-menu[data-v-54fb5ddb] .el-menu-item.is-active{color:#fff!important;background:var(--slake-brand)!important}.slake-menu[data-v-54fb5ddb] .el-sub-menu.is-active>.el-sub-menu__title{color:var(--slake-brand)!important}.spacer[data-v-54fb5ddb]{flex:1}.topbar-user[data-v-54fb5ddb] .user-link{cursor:pointer;font-size:var(--topbar-title-font-size);color:#212529;outline:none;align-items:center;gap:6px;font-weight:500;line-height:1;display:inline-flex}.topbar-user[data-v-54fb5ddb] .user-link:hover,.topbar-user[data-v-54fb5ddb] .user-link:focus{color:var(--slake-brand)}.topbar-user[data-v-54fb5ddb] .el-icon{font-size:var(--topbar-title-font-size)}.main[data-v-54fb5ddb]{background:var(--slake-bg-page);box-sizing:border-box;height:100%;padding:16px;overflow:auto}.admin-layout .layout-topbar .topbar-user .user-link{font-size:var(--topbar-title-font-size)!important;line-height:1!important}.el-overlay-dialog:has(.el-dialog.pwd-dialog){align-items:center}.el-overlay-dialog .el-dialog.pwd-dialog{flex-direction:column;align-self:center;width:480px;max-width:calc(100vw - 32px);display:flex;height:auto!important;max-height:none!important;margin:12vh auto 24px!important}.pwd-dialog .el-dialog__header{flex:none}.pwd-dialog .el-dialog__body{padding:12px 20px 4px;flex:none!important;min-height:0!important;overflow:visible!important}.pwd-dialog .el-dialog__footer{flex:none;padding:12px 20px 16px}.pwd-dialog-form .el-form-item{margin-bottom:14px}.pwd-dialog-form .el-form-item:last-child{margin-bottom:0}.pwd-dialog-form .el-form-item__label{white-space:nowrap;line-height:32px}.el-dropdown-menu__item.dropdown-logout{color:var(--slake-brand)!important} diff --git a/public/admin/assets/AdminLayout-BUb933pz.js b/public/admin/assets/AdminLayout-BUb933pz.js new file mode 100644 index 0000000..df9a831 --- /dev/null +++ b/public/admin/assets/AdminLayout-BUb933pz.js @@ -0,0 +1 @@ +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,Y as s,Z as c,at as l,b as u,f as d,h as f,ht as p,m,q as h,tn as g,x as _,y as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{a as y,d as b,h as x,l as S,n as C,o as w,s as T,t as E,v as D}from"./index-jhdMOnS8.js";var O={class:`user-link`},k=T(n({__name:`AdminLayout`,setup(n){let T=y(),k=w(),A=E(),j=v(()=>T.path),M=p(!1),N=p(!1),P=p({password:``,password_confirmation:``}),F=v(()=>A.user?.username||`—`);function I(e){return e&&x[e]||D}function L(e){e&&e!==T.path&&k.push(e)}async function R(e){e===`out`&&(await A.logout(),await k.replace({name:`login`})),e===`pwd`&&(P.value={password:``,password_confirmation:``},M.value=!0)}async function z(){N.value=!0;try{await C(P.value),S.success(`密码已更新`),M.value=!1}finally{N.value=!1}}return(n,p)=>{let v=s(`el-icon`),y=s(`el-dropdown-item`),x=s(`el-dropdown-menu`),S=s(`el-dropdown`),C=s(`el-header`),w=s(`el-menu-item`),E=s(`el-sub-menu`),D=s(`el-menu`),k=s(`el-aside`),B=s(`router-view`),V=s(`el-main`),H=s(`el-container`),U=s(`el-input`),W=s(`el-form-item`),G=s(`el-form`),K=s(`el-button`),q=s(`el-dialog`);return i(),e(m,null,[r(H,{class:`admin-layout`,direction:`vertical`},{default:l(()=>[r(C,{class:`layout-topbar`,height:`52px`},{default:l(()=>[p[7]||=u(`div`,{class:`brand`},`S-lake高校雷达网`,-1),p[8]||=u(`div`,{class:`spacer`},null,-1),r(S,{class:`topbar-user`,trigger:`click`,onCommand:R},{dropdown:l(()=>[r(x,null,{default:l(()=>[r(y,{command:`pwd`},{default:l(()=>[...p[5]||=[o(`修改密码`,-1)]]),_:1}),r(y,{command:`out`,divided:``,class:`dropdown-logout`},{default:l(()=>[...p[6]||=[o(` 退出登录 `,-1)]]),_:1})]),_:1})]),default:l(()=>[u(`span`,O,[o(g(t(A).user?.real_name||t(A).user?.username)+` `,1),r(v,{class:`el-icon--right`},{default:l(()=>[r(t(b))]),_:1})])]),_:1})]),_:1}),r(H,{class:`layout-body`},{default:l(()=>[r(k,{width:`260px`,class:`aside`},{default:l(()=>[r(D,{"default-active":j.value,class:`menu slake-menu`,"background-color":`#ffffff`,"text-color":`#495057`,"active-text-color":`#ffffff`},{default:l(()=>[(i(!0),e(m,null,h(t(A).menus,t=>(i(),e(m,{key:t.id},[t.children?.length?(i(),_(E,{key:0,index:String(t.id)},{title:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),default:l(()=>[(i(!0),e(m,null,h(t.children,e=>(i(),_(w,{key:e.id,index:e.path,onClick:t=>L(e.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(e.icon))))]),_:2},1024),u(`span`,null,g(e.title),1)]),_:2},1032,[`index`,`onClick`]))),128))]),_:2},1032,[`index`])):(i(),_(w,{key:1,index:t.path,onClick:e=>L(t.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(I(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),_:2},1032,[`index`,`onClick`]))],64))),128))]),_:1},8,[`default-active`])]),_:1}),r(V,{class:`main`},{default:l(()=>[r(B,null,{default:l(({Component:e})=>[(i(),_(f,null,[t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)],1024)),!t(T).meta.keepAlive&&e?(i(),_(c(e),{key:t(T).fullPath})):a(``,!0)]),_:1})]),_:1})]),_:1})]),_:1}),r(q,{modelValue:M.value,"onUpdate:modelValue":p[3]||=e=>M.value=e,class:`pwd-dialog`,title:`修改密码`,width:`480px`,"append-to-body":``,"destroy-on-close":``,onClosed:p[4]||=e=>P.value={password:``,password_confirmation:``}},{footer:l(()=>[r(K,{onClick:p[2]||=e=>M.value=!1},{default:l(()=>[...p[9]||=[o(`取消`,-1)]]),_:1}),r(K,{type:`primary`,loading:N.value,onClick:z},{default:l(()=>[...p[10]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(G,{class:`pwd-dialog-form`,"label-width":`100px`,onSubmit:d(z,[`prevent`])},{default:l(()=>[r(W,{label:`账号`},{default:l(()=>[r(U,{"model-value":F.value,readonly:``},null,8,[`model-value`])]),_:1}),r(W,{label:`新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password,"onUpdate:modelValue":p[0]||=e=>P.value.password=e,type:`password`,"show-password":``,placeholder:`至少 6 位`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(W,{label:`确认新密码`,required:``},{default:l(()=>[r(U,{modelValue:P.value.password_confirmation,"onUpdate:modelValue":p[1]||=e=>P.value.password_confirmation=e,type:`password`,"show-password":``,placeholder:`再次输入新密码`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-54fb5ddb`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/AdminLayout-CC6KcCF-.js b/public/admin/assets/AdminLayout-CC6KcCF-.js deleted file mode 100644 index 4105765..0000000 --- a/public/admin/assets/AdminLayout-CC6KcCF-.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,Y as s,Z as c,at as l,b as u,f as d,h as f,ht as p,m,q as h,tn as g,x as _,y as v}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as y,f as b,g as x,i as S,n as C,o as w,s as T,t as E,u as D,y as O}from"./index-CpW3rNmm.js";var k={class:`user-link`},A=y(n({__name:`AdminLayout`,setup(n){let y=w(),A=T(),j=E(),M=v(()=>y.path),N=p(!1),P=p(!1),F=p({password:``,password_confirmation:``}),I=v(()=>j.user?.username||`—`);function L(e){return e&&x[e]||O}function R(e){e&&e!==y.path&&A.push(e)}async function z(e){e===`out`&&(await j.logout(),window.location.assign(S())),e===`pwd`&&(F.value={password:``,password_confirmation:``},N.value=!0)}async function B(){P.value=!0;try{await C(F.value),D.success(`密码已更新`),N.value=!1}finally{P.value=!1}}return(n,p)=>{let v=s(`el-icon`),x=s(`el-dropdown-item`),S=s(`el-dropdown-menu`),C=s(`el-dropdown`),w=s(`el-header`),T=s(`el-menu-item`),E=s(`el-sub-menu`),D=s(`el-menu`),O=s(`el-aside`),A=s(`router-view`),V=s(`el-main`),H=s(`el-container`),U=s(`el-input`),W=s(`el-form-item`),G=s(`el-form`),K=s(`el-button`),q=s(`el-dialog`);return i(),e(m,null,[r(H,{class:`admin-layout`,direction:`vertical`},{default:l(()=>[r(w,{class:`layout-topbar`,height:`52px`},{default:l(()=>[p[7]||=u(`div`,{class:`brand`},`S-lake高校雷达网`,-1),p[8]||=u(`div`,{class:`spacer`},null,-1),r(C,{class:`topbar-user`,trigger:`click`,onCommand:z},{dropdown:l(()=>[r(S,null,{default:l(()=>[r(x,{command:`pwd`},{default:l(()=>[...p[5]||=[o(`修改密码`,-1)]]),_:1}),r(x,{command:`out`,divided:``,class:`dropdown-logout`},{default:l(()=>[...p[6]||=[o(` 退出登录 `,-1)]]),_:1})]),_:1})]),default:l(()=>[u(`span`,k,[o(g(t(j).user?.real_name||t(j).user?.username)+` `,1),r(v,{class:`el-icon--right`},{default:l(()=>[r(t(b))]),_:1})])]),_:1})]),_:1}),r(H,{class:`layout-body`},{default:l(()=>[r(O,{width:`260px`,class:`aside`},{default:l(()=>[r(D,{"default-active":M.value,class:`menu slake-menu`,"background-color":`#ffffff`,"text-color":`#495057`,"active-text-color":`#ffffff`},{default:l(()=>[(i(!0),e(m,null,h(t(j).menus,t=>(i(),e(m,{key:t.id},[t.children?.length?(i(),_(E,{key:0,index:String(t.id)},{title:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(L(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),default:l(()=>[(i(!0),e(m,null,h(t.children,e=>(i(),_(T,{key:e.id,index:e.path,onClick:t=>R(e.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(L(e.icon))))]),_:2},1024),u(`span`,null,g(e.title),1)]),_:2},1032,[`index`,`onClick`]))),128))]),_:2},1032,[`index`])):(i(),_(T,{key:1,index:t.path,onClick:e=>R(t.path)},{default:l(()=>[r(v,null,{default:l(()=>[(i(),_(c(L(t.icon))))]),_:2},1024),u(`span`,null,g(t.title),1)]),_:2},1032,[`index`,`onClick`]))],64))),128))]),_:1},8,[`default-active`])]),_:1}),r(V,{class:`main`},{default:l(()=>[r(A,null,{default:l(({Component:e})=>[(i(),_(f,null,[t(y).meta.keepAlive&&e?(i(),_(c(e),{key:t(y).fullPath})):a(``,!0)],1024)),!t(y).meta.keepAlive&&e?(i(),_(c(e),{key:t(y).fullPath})):a(``,!0)]),_:1})]),_:1})]),_:1})]),_:1}),r(q,{modelValue:N.value,"onUpdate:modelValue":p[3]||=e=>N.value=e,class:`pwd-dialog`,title:`修改密码`,width:`480px`,"append-to-body":``,"destroy-on-close":``,onClosed:p[4]||=e=>F.value={password:``,password_confirmation:``}},{footer:l(()=>[r(K,{onClick:p[2]||=e=>N.value=!1},{default:l(()=>[...p[9]||=[o(`取消`,-1)]]),_:1}),r(K,{type:`primary`,loading:P.value,onClick:B},{default:l(()=>[...p[10]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:l(()=>[r(G,{class:`pwd-dialog-form`,"label-width":`100px`,onSubmit:d(B,[`prevent`])},{default:l(()=>[r(W,{label:`账号`},{default:l(()=>[r(U,{"model-value":I.value,readonly:``},null,8,[`model-value`])]),_:1}),r(W,{label:`新密码`,required:``},{default:l(()=>[r(U,{modelValue:F.value.password,"onUpdate:modelValue":p[0]||=e=>F.value.password=e,type:`password`,"show-password":``,placeholder:`至少 6 位`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1}),r(W,{label:`确认新密码`,required:``},{default:l(()=>[r(U,{modelValue:F.value.password_confirmation,"onUpdate:modelValue":p[1]||=e=>F.value.password_confirmation=e,type:`password`,"show-password":``,placeholder:`再次输入新密码`,autocomplete:`new-password`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-ebc16007`]]);export{A as default}; \ No newline at end of file diff --git a/public/admin/assets/HomeView-BUDTA8VN.js b/public/admin/assets/HomeView-BxwLAXqC.js similarity index 94% rename from public/admin/assets/HomeView-BUDTA8VN.js rename to public/admin/assets/HomeView-BxwLAXqC.js index 33a545c..60f0326 100644 --- a/public/admin/assets/HomeView-BUDTA8VN.js +++ b/public/admin/assets/HomeView-BxwLAXqC.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,T as a,Y as o,at as s,b as c,tn as l,y as u}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{_ as d,c as f}from"./index-CpW3rNmm.js";var p={class:`page`},m={class:`card-head`},h=f(n({__name:`HomeView`,setup(n){let f=u(()=>`/api`);return(n,u)=>{let h=o(`el-icon`),g=o(`el-descriptions-item`),_=o(`el-descriptions`),v=o(`el-card`);return i(),e(`div`,p,[r(v,{class:`card`,shadow:`hover`},{header:s(()=>[c(`div`,m,[r(h,{size:22},{default:s(()=>[r(t(d))]),_:1}),u[0]||=c(`span`,null,`高校雷达网 · 管理后台`,-1)])]),default:s(()=>[u[2]||=c(`p`,{class:`desc`},[a(`技术栈:Vue 3、Vite、TypeScript、Element Plus。本地已配置对接 `),c(`code`,null,`slake-school-service`),a(` 的 API 代理。`)],-1),r(_,{column:1,border:``},{default:s(()=>[r(g,{label:`VITE_API_BASE_URL`},{default:s(()=>[c(`code`,null,l(f.value),1)]),_:1}),r(g,{label:`说明`},{default:s(()=>[...u[1]||=[a(` 开发时请求 `,-1),c(`code`,null,`/api/*`,-1),a(` 由 Vite 转发至 `,-1),c(`code`,null,`VITE_PROXY_TARGET`,-1),a(`(默认 `,-1),c(`code`,null,`http://127.0.0.1:8000`,-1),a(`),与 Laravel 的 `,-1),c(`code`,null,`/api`,-1),a(` 前缀一致。 `,-1)]]),_:1})]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-436e6398`]]);export{h as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,T as a,Y as o,at as s,b as c,tn as l,y as u}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{g as d,s as f}from"./index-jhdMOnS8.js";var p={class:`page`},m={class:`card-head`},h=f(n({__name:`HomeView`,setup(n){let f=u(()=>`/api`);return(n,u)=>{let h=o(`el-icon`),g=o(`el-descriptions-item`),_=o(`el-descriptions`),v=o(`el-card`);return i(),e(`div`,p,[r(v,{class:`card`,shadow:`hover`},{header:s(()=>[c(`div`,m,[r(h,{size:22},{default:s(()=>[r(t(d))]),_:1}),u[0]||=c(`span`,null,`高校雷达网 · 管理后台`,-1)])]),default:s(()=>[u[2]||=c(`p`,{class:`desc`},[a(`技术栈:Vue 3、Vite、TypeScript、Element Plus。本地已配置对接 `),c(`code`,null,`slake-school-service`),a(` 的 API 代理。`)],-1),r(_,{column:1,border:``},{default:s(()=>[r(g,{label:`VITE_API_BASE_URL`},{default:s(()=>[c(`code`,null,l(f.value),1)]),_:1}),r(g,{label:`说明`},{default:s(()=>[...u[1]||=[a(` 开发时请求 `,-1),c(`code`,null,`/api/*`,-1),a(` 由 Vite 转发至 `,-1),c(`code`,null,`VITE_PROXY_TARGET`,-1),a(`(默认 `,-1),c(`code`,null,`http://127.0.0.1:8000`,-1),a(`),与 Laravel 的 `,-1),c(`code`,null,`/api`,-1),a(` 前缀一致。 `,-1)]]),_:1})]),_:1})]),_:1})])}}}),[[`__scopeId`,`data-v-436e6398`]]);export{h as default}; \ No newline at end of file diff --git a/public/admin/assets/TeacherDetailDialog-CTPg22QM.js b/public/admin/assets/TeacherDetailDialog-BEWCufF_.js similarity index 81% rename from public/admin/assets/TeacherDetailDialog-CTPg22QM.js rename to public/admin/assets/TeacherDetailDialog-BEWCufF_.js index 32b487a..491d70c 100644 --- a/public/admin/assets/TeacherDetailDialog-CTPg22QM.js +++ b/public/admin/assets/TeacherDetailDialog-BEWCufF_.js @@ -1 +1 @@ -import{r as e}from"./rolldown-runtime-BYbx6iT9.js";import{C as t,Ct as n,D as r,E as i,G as a,P as o,S as s,T as c,X as ee,Y as l,at as u,b as d,d as te,et as f,ht as p,m,ot as ne,q as h,rt as g,tn as _,x as v,y}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as b,l as x,t as S,u as C}from"./index-CpW3rNmm.js";import{l as w}from"./assets-Bc1CNRVa.js";import{a as T,c as E,h as D,i as O,m as k,o as A,p as j,s as M,u as N}from"./teachers-csfpCE52.js";import{a as P}from"./dict-CUGiftrt.js";import{i as F,o as I,s as L}from"./demands-CD6Fn9-3.js";import{a as R,n as z,o as re}from"./teacherStar-DhP_EdY6.js";var B={class:`library-toolbar`},V={key:1,class:`text-mute`},H={key:0,class:`library-pager`},ie=b(r({__name:`TeacherPaperDialog`,props:o({teacherId:{},defaultAuthors:{},defaultSchoolName:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:o([`saved`],[`update:modelValue`]),setup(e,{emit:n}){let r=f(e,`modelValue`),o=e,m=n,h=p(`manual`),y=p(!1),b=p({title:``,authors:``,school_name:``,published_at:``,url:``,summary:``}),x=p(``),S=p(!1),T=p([]),E=p(1),D=p({current_page:1,per_page:10,total:0}),A=p([]),j=p();function M(){b.value={title:``,authors:o.defaultAuthors||``,school_name:o.defaultSchoolName||``,published_at:``,url:``,summary:``}}async function P(){o.teacherId&&(A.value=(await N(o.teacherId)).map(e=>e.id))}async function F(e=E.value){S.value=!0;try{let t=await w({page:e,page_size:D.value.per_page,keyword:x.value.trim()||void 0});T.value=t.items,D.value=t.meta,E.value=t.meta.current_page,j.value&&!t.items.some(e=>e.id===j.value)&&(j.value=void 0)}finally{S.value=!1}}function I(){E.value=1,F(1)}function L(e){A.value.includes(e.id)||(j.value=e.id)}async function R(){if(o.teacherId){if(!b.value.title.trim()||!b.value.authors.trim()){C.warning(`请填写标题与作者`);return}if(!b.value.published_at){C.warning(`请选择发表时间`);return}y.value=!0;try{await O(o.teacherId,{...b.value}),C.success(`已添加论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function z(){if(o.teacherId){if(!j.value){C.warning(`请选择要关联的论文`);return}if(A.value.includes(j.value)){C.warning(`该论文已关联此老师`);return}y.value=!0;try{await k(o.teacherId,j.value),C.success(`已关联论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function re(){h.value===`manual`?await R():await z()}return g(()=>[r.value,o.teacherId],([e])=>{e&&o.teacherId&&(h.value=`manual`,j.value=void 0,x.value=``,E.value=1,M(),P(),F(1))}),g(h,e=>{e===`library`&&r.value&&o.teacherId&&F(E.value)}),(e,n)=>{let o=l(`el-input`),f=l(`el-form-item`),p=l(`el-col`),m=l(`el-date-picker`),g=l(`el-row`),C=l(`el-form`),w=l(`el-tab-pane`),O=l(`el-button`),k=l(`el-table-column`),j=l(`el-tag`),M=l(`el-table`),N=l(`el-pagination`),P=l(`el-tabs`),R=l(`el-dialog`),z=ee(`loading`);return a(),v(R,{modelValue:r.value,"onUpdate:modelValue":n[10]||=e=>r.value=e,title:`论文`,width:`720px`,"destroy-on-close":``,"append-to-body":``},{footer:u(()=>[i(O,{onClick:n[9]||=e=>r.value=!1},{default:u(()=>[...n[13]||=[c(`取消`,-1)]]),_:1}),i(O,{type:`primary`,loading:y.value,onClick:re},{default:u(()=>[c(_(h.value===`manual`?`保存`:`确认关联`),1)]),_:1},8,[`loading`])]),default:u(()=>[i(P,{modelValue:h.value,"onUpdate:modelValue":n[8]||=e=>h.value=e},{default:u(()=>[i(w,{label:`手动录入`,name:`manual`},{default:u(()=>[i(C,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(f,{label:`标题`,required:``},{default:u(()=>[i(o,{modelValue:b.value.title,"onUpdate:modelValue":n[0]||=e=>b.value.title=e,placeholder:`请输入论文标题`},null,8,[`modelValue`])]),_:1}),i(g,{gutter:12},{default:u(()=>[i(p,{span:12},{default:u(()=>[i(f,{label:`作者`,required:``},{default:u(()=>[i(o,{modelValue:b.value.authors,"onUpdate:modelValue":n[1]||=e=>b.value.authors=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`学校`},{default:u(()=>[i(o,{modelValue:b.value.school_name,"onUpdate:modelValue":n[2]||=e=>b.value.school_name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`发表时间`,required:``},{default:u(()=>[i(m,{modelValue:b.value.published_at,"onUpdate:modelValue":n[3]||=e=>b.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`链接`},{default:u(()=>[i(o,{modelValue:b.value.url,"onUpdate:modelValue":n[4]||=e=>b.value.url=e,placeholder:`https://example.com/paper`},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:24},{default:u(()=>[i(f,{label:`摘要`},{default:u(()=>[i(o,{modelValue:b.value.summary,"onUpdate:modelValue":n[5]||=e=>b.value.summary=e,type:`textarea`,rows:4,placeholder:`请输入论文摘要`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),i(w,{label:`从论文库选择`,name:`library`},{default:u(()=>[d(`div`,B,[i(o,{modelValue:x.value,"onUpdate:modelValue":n[6]||=e=>x.value=e,clearable:``,placeholder:`搜索标题、作者、学校…`,style:{width:`260px`},onKeyup:te(I,[`enter`])},null,8,[`modelValue`]),i(O,{type:`primary`,onClick:I},{default:u(()=>[...n[11]||=[c(`搜索`,-1)]]),_:1})]),ne((a(),v(M,{data:T.value,size:`small`,"highlight-current-row":``,class:`library-table`,"row-class-name":({row:e})=>A.value.includes(e.id)?`is-linked-row`:``,onRowClick:L,onCurrentChange:n[7]||=e=>{e&&L(e)}},{default:u(()=>[i(k,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(k,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),i(k,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``}),i(k,{label:`状态`,width:`80`,align:`center`},{default:u(({row:e})=>[A.value.includes(e.id)?(a(),v(j,{key:0,size:`small`,type:`info`},{default:u(()=>[...n[12]||=[c(`已关联`,-1)]]),_:1})):(a(),t(`span`,V,`—`))]),_:1})]),_:1},8,[`data`,`row-class-name`])),[[z,S.value]]),D.value.total>0?(a(),t(`div`,H,[i(N,{layout:`total, prev, pager, next`,total:D.value.total,"page-size":D.value.per_page,"current-page":E.value,onCurrentChange:F},null,8,[`total`,`page-size`,`current-page`])])):s(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-d91269f1`]]),ae={class:`detail-body`},oe={key:0,class:`basic-info-block`},se={key:1,class:`basic-info-block`},ce={key:0,class:`crawl-uni-hint`},le={class:`uni-row`},ue={class:`star-preview`},de={key:0,class:`star-follow-rule`},fe={class:`section`},pe={class:`section-head`},me={class:`muted`},he={class:`section`},ge={class:`section-head`},_e={class:`muted`},ve={class:`summary-body`},ye={class:`follow-summary`},be={class:`log-head`},U=r({__name:`TeacherDetailDialog`,props:{modelValue:{type:Boolean},teacherId:{},readonly:{type:Boolean}},emits:[`update:modelValue`,`saved`],setup(e,{emit:r}){let o=S(),te=y(()=>o.isGridMember),f=e,b=y(()=>f.readonly===!0),w=y(()=>{let e=H.value?.name;return b.value?e?`查看 · ${e}`:`老师详情`:e?`编辑 · ${e}`:`编辑老师`});function O(e){return e.university_name?e.university_name:e.university_text?`${e.university_text}(未关联高校库)`:`—`}function k(e){return e.research_direction?e.research_direction:e.research_directions?.map(e=>e.name).join(`、`)||`—`}let B=r,V=p(!1),H=p(null),U=p(null),W=y(()=>R(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value)),G=p([]),K=p([]),q=p([]),xe=p([]),J=p([]),Se=p([]),Y=p({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),X=p(!1),Z=p(!1),Q=p({name:``,city:``,province:``,longitude:``,latitude:``}),$=p(!1),Ce=p(!1),we=p(``),Te=p(!1),Ee=p(``),De=p([]);async function Oe(){let e=await j({page:1,page_size:200}),t=o.user?.grid_scope?.university_ids;J.value=t?.length?e.items.filter(e=>t.includes(e.id)):e.items}async function ke(){let e=await E(),t=o.user?.grid_scope?.research_direction_ids;Se.value=t?.length?e.research_directions.filter(e=>t.includes(e.id)):e.research_directions}function Ae(){Q.value={name:``,city:Y.value.city||``,province:``,longitude:``,latitude:``},X.value=!0}async function je(){let e=Q.value;if(!e.name.trim()){C.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){C.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){C.warning(`经纬度须为有效数字`);return}Z.value=!0;try{let r=await T({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});J.value.some(e=>e.id===r.id)||J.value.push(r),Y.value.university_id=r.id,r.city&&(Y.value.city=r.city),X.value=!1,C.success(`高校已创建`)}finally{Z.value=!1}}async function Me(){if(f.teacherId){V.value=!0;try{let e=await M(f.teacherId);H.value=e,U.value=e.star_level_dict_item_id??null,Y.value={name:e.name||``,university_id:e.university_id??void 0,research_direction_ids:e.research_direction_ids?.length?[...e.research_direction_ids]:e.research_directions?.map(e=>e.id)||[],city:e.city||``,title:e.title||``,phone:e.phone||``,email:e.email||``,star_level_dict_item_id:e.star_level_dict_item_id??void 0,status_dict_item_id:e.status_dict_item_id??void 0,next_follow_date:e.next_follow_date||``};let[t,n]=await Promise.all([N(f.teacherId),L({teacher_id:f.teacherId,page:1,page_size:50})]);G.value=t,K.value=n.items}finally{V.value=!1}}}function Ne(){let e=Y.value;return e.name.trim()?e.university_id?e.city.trim()?e.title.trim()?e.research_direction_ids.length?e.status_dict_item_id?!0:(C.warning(`请选择状态`),!1):(C.warning(`请至少选择一个研究方向`),!1):(C.warning(`请填写职称`),!1):(C.warning(`请填写城市`),!1):(C.warning(`请选择高校,或点击「新建高校」`),!1):(C.warning(`请填写姓名`),!1)}async function Pe(){if(!f.teacherId||!H.value||!Ne())return;let e=(Y.value.star_level_dict_item_id??null)!==U.value;await D(f.teacherId,{name:Y.value.name.trim(),university_id:Y.value.university_id,city:Y.value.city.trim(),title:Y.value.title.trim(),research_direction_ids:Y.value.research_direction_ids,phone:Y.value.phone||null,email:Y.value.email||null,star_level_dict_item_id:Y.value.star_level_dict_item_id??null,status_dict_item_id:Y.value.status_dict_item_id,...e?{recalc_next_follow_date:!0}:{next_follow_date:Y.value.next_follow_date||null,recalc_next_follow_date:!1}}),C.success(`已保存`),B(`saved`),B(`update:modelValue`,!1)}function Fe(){let e=q.value.find(e=>e.id===Y.value.star_level_dict_item_id);Y.value.next_follow_date=re(e?.value)||``}function Ie(e){if(!e)return;let t=J.value.find(t=>t.id===e);t?.city&&!Y.value.city&&(Y.value.city=t.city)}function Le(){$.value=!0}async function Re(){f.teacherId&&(G.value=await N(f.teacherId))}async function ze(e){await x.confirm(`确定删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await A(f.teacherId,e.id),G.value=await N(f.teacherId)}function Be(e){we.value=e.summary||`暂无摘要`,Ce.value=!0}async function Ve(e){Ee.value=e.title,De.value=await I(e.id),Te.value=!0}return g(()=>[f.modelValue,f.teacherId],async([e,t])=>{if(e&&t){if(!q.value.length){let[e,t]=await Promise.all([P(`teacher_level`),P(`teacher_status`)]);q.value=e.items,xe.value=t.items,await Oe()}await ke(),await Me()}}),g(()=>Y.value.university_id,e=>Ie(e)),(r,o)=>{let f=l(`el-descriptions-item`),p=l(`el-descriptions`),g=l(`el-input`),y=l(`el-form-item`),x=l(`el-col`),S=l(`el-option`),C=l(`el-select`),T=l(`el-button`),E=l(`el-date-picker`),D=l(`el-row`),A=l(`el-form`),j=l(`el-table-column`),M=l(`el-link`),N=l(`el-table`),P=l(`el-tag`),I=l(`el-empty`),L=l(`el-dialog`),R=ee(`loading`);return a(),v(L,{"model-value":e.modelValue,title:w.value,width:`960px`,top:`4vh`,"destroy-on-close":``,"onUpdate:modelValue":o[21]||=e=>B(`update:modelValue`,e)},{footer:u(()=>[i(T,{onClick:o[10]||=e=>B(`update:modelValue`,!1)},{default:u(()=>[...o[31]||=[c(`关闭`,-1)]]),_:1}),b.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,class:`teachers-primary-btn`,onClick:Pe},{default:u(()=>[...o[32]||=[c(` 保存 `,-1)]]),_:1}))]),default:u(()=>[ne((a(),t(`div`,ae,[b.value&&H.value?(a(),t(`div`,oe,[o[22]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(p,{column:3,border:``,size:`small`,class:`view-desc`},{default:u(()=>[i(f,{label:`姓名`},{default:u(()=>[c(_(H.value.name),1)]),_:1}),i(f,{label:`高校`},{default:u(()=>[c(_(O(H.value)),1)]),_:1}),i(f,{label:`城市`},{default:u(()=>[c(_(H.value.city||`—`),1)]),_:1}),i(f,{label:`职称`},{default:u(()=>[c(_(H.value.title||`—`),1)]),_:1}),i(f,{label:`研究方向`,span:2},{default:u(()=>[c(_(k(H.value)),1)]),_:1}),i(f,{label:`电话`},{default:u(()=>[c(_(H.value.phone||`—`),1)]),_:1}),i(f,{label:`邮箱`},{default:u(()=>[c(_(H.value.email||`—`),1)]),_:1}),i(f,{label:`星级`},{default:u(()=>[c(_(n(z)(H.value.star_level_item?.value,H.value.star_level_item?.label)),1)]),_:1}),i(f,{label:`状态`},{default:u(()=>[c(_(H.value.status_item?.label||`—`),1)]),_:1}),i(f,{label:`下次跟进日期`},{default:u(()=>[c(_(H.value.next_follow_date||`—`),1)]),_:1}),H.value.source_item?.label?(a(),v(f,{key:0,label:`来源`},{default:u(()=>[c(_(H.value.source_item.label),1)]),_:1})):s(``,!0)]),_:1})])):(a(),t(`div`,se,[o[24]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(D,{gutter:12},{default:u(()=>[i(x,{xs:24,md:4},{default:u(()=>[i(y,{label:`姓名`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.name,"onUpdate:modelValue":o[0]||=e=>Y.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:8},{default:u(()=>[i(y,{label:`高校`,required:``},{default:u(()=>[H.value?.university_text&&!Y.value.university_id?(a(),t(`p`,ce,` 论文抓取高校:`+_(H.value.university_text)+`(请在下拉中选择或新建以关联) `,1)):s(``,!0),d(`div`,le,[i(C,{modelValue:Y.value.university_id,"onUpdate:modelValue":o[1]||=e=>Y.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:u(()=>[(a(!0),t(m,null,h(J.value,e=>(a(),v(S,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),te.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Ae},{default:u(()=>[...o[23]||=[c(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),i(x,{xs:24,md:4},{default:u(()=>[i(y,{label:`城市`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.city,"onUpdate:modelValue":o[2]||=e=>Y.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:8},{default:u(()=>[i(y,{label:`职称`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.title,"onUpdate:modelValue":o[3]||=e=>Y.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:8},{default:u(()=>[i(y,{label:`研究方向`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.research_direction_ids,"onUpdate:modelValue":o[4]||=e=>Y.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(Se.value,e=>(a(),v(S,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:6},{default:u(()=>[i(y,{label:`电话`},{default:u(()=>[i(g,{modelValue:Y.value.phone,"onUpdate:modelValue":o[5]||=e=>Y.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:6},{default:u(()=>[i(y,{label:`邮箱`},{default:u(()=>[i(g,{modelValue:Y.value.email,"onUpdate:modelValue":o[6]||=e=>Y.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:4},{default:u(()=>[i(y,{label:`星级`},{default:u(()=>[i(C,{modelValue:Y.value.star_level_dict_item_id,"onUpdate:modelValue":o[7]||=e=>Y.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:Fe},{default:u(()=>[(a(!0),t(m,null,h(q.value,e=>(a(),v(S,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),d(`span`,ue,_(n(z)(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value,q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),i(x,{xs:24,md:6},{default:u(()=>[i(y,{label:`状态`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":o[8]||=e=>Y.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(xe.value,e=>(a(),v(S,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(x,{xs:24,md:6},{default:u(()=>[i(y,{label:`下次跟进日期`},{default:u(()=>[i(E,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":o[9]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`]),W.value?(a(),t(`p`,de,_(W.value),1)):s(``,!0)]),_:1})]),_:1})]),_:1})]),_:1})])),d(`div`,fe,[d(`div`,pe,[o[26]||=d(`h3`,null,`论文列表`,-1),d(`span`,me,`共 `+_(G.value.length)+` 篇`,1),b.value?s(``,!0):(a(),v(T,{key:0,size:`small`,type:`primary`,plain:``,onClick:Le},{default:u(()=>[...o[25]||=[c(` 添加论文 `,-1)]]),_:1}))]),i(N,{data:G.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(j,{prop:`authors`,label:`作者`,width:`140`}),i(j,{prop:`school_name`,label:`学校`,width:`120`}),i(j,{prop:`published_at`,label:`发表时间`,width:`110`}),i(j,{label:`链接`,width:`70`},{default:u(({row:e})=>[e.url?(a(),v(M,{key:0,href:e.url,target:`_blank`},{default:u(()=>[...o[27]||=[c(`查看`,-1)]]),_:1},8,[`href`])):s(``,!0)]),_:1}),i(j,{label:`操作`,width:b.value?70:120},{default:u(({row:e})=>[i(T,{link:``,type:`primary`,onClick:t=>Be(e)},{default:u(()=>[...o[28]||=[c(`摘要`,-1)]]),_:1},8,[`onClick`]),b.value?s(``,!0):(a(),v(T,{key:0,link:``,type:`danger`,onClick:t=>ze(e)},{default:u(()=>[...o[29]||=[c(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1},8,[`width`])]),_:1},8,[`data`])]),d(`div`,he,[d(`div`,ge,[o[30]||=d(`h3`,null,`需求列表`,-1),d(`span`,_e,`共 `+_(K.value.length)+` 条`,1)]),i(N,{data:K.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{label:`类型`,width:`100`},{default:u(({row:e})=>[i(P,{size:`small`,effect:`dark`},{default:u(()=>[c(_(e.type_item?.label),1)]),_:2},1024)]),_:1}),i(j,{prop:`title`,label:`标题`,"min-width":`180`,"show-overflow-tooltip":``}),i(j,{prop:`submitted_at`,label:`时间`,width:`110`}),i(j,{label:`处理状态`,width:`100`},{default:u(({row:e})=>[i(P,{type:n(F)(e.status_item?.value),size:`small`,effect:`dark`},{default:u(()=>[c(_(e.status_item?.label),1)]),_:2},1032,[`type`])]),_:1}),i(j,{label:`跟进记录`,width:`100`},{default:u(({row:e})=>[i(T,{size:`small`,onClick:t=>Ve(e)},{default:u(()=>[c(_(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1})]),_:1},8,[`data`]),K.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无关联需求`,"image-size":64}))])])),[[R,V.value]]),i(L,{modelValue:X.value,"onUpdate:modelValue":o[17]||=e=>X.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:u(()=>[i(T,{onClick:o[16]||=e=>X.value=!1},{default:u(()=>[...o[33]||=[c(`取消`,-1)]]),_:1}),i(T,{type:`primary`,class:`teachers-primary-btn`,loading:Z.value,onClick:je},{default:u(()=>[...o[34]||=[c(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:u(()=>[i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(y,{label:`高校名称`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.name,"onUpdate:modelValue":o[11]||=e=>Q.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),i(D,{gutter:12},{default:u(()=>[i(x,{span:12},{default:u(()=>[i(y,{label:`经度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.longitude,"onUpdate:modelValue":o[12]||=e=>Q.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{span:12},{default:u(()=>[i(y,{label:`纬度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.latitude,"onUpdate:modelValue":o[13]||=e=>Q.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),i(D,{gutter:12},{default:u(()=>[i(x,{span:12},{default:u(()=>[i(y,{label:`省份`},{default:u(()=>[i(g,{modelValue:Q.value.province,"onUpdate:modelValue":o[14]||=e=>Q.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),i(x,{span:12},{default:u(()=>[i(y,{label:`城市`},{default:u(()=>[i(g,{modelValue:Q.value.city,"onUpdate:modelValue":o[15]||=e=>Q.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(L,{modelValue:Ce.value,"onUpdate:modelValue":o[18]||=e=>Ce.value=e,title:`论文摘要`,width:`520px`,"append-to-body":``},{default:u(()=>[d(`p`,ve,_(we.value),1)]),_:1},8,[`modelValue`]),i(ie,{modelValue:$.value,"onUpdate:modelValue":o[19]||=e=>$.value=e,"teacher-id":e.teacherId,"default-authors":H.value?.name||Y.value.name,"default-school-name":J.value.find(e=>e.id===Y.value.university_id)?.name||H.value?.university_name||``,onSaved:Re},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),i(L,{modelValue:Te.value,"onUpdate:modelValue":o[20]||=e=>Te.value=e,title:`需求跟进记录`,width:`640px`,"append-to-body":``},{default:u(()=>[d(`p`,ye,_(Ee.value),1),(a(!0),t(m,null,h(De.value,e=>(a(),t(`div`,{key:e.id,class:`log-card`},[d(`div`,be,[d(`strong`,null,_(e.operator_name),1),d(`span`,null,_(e.handled_at),1),e.status_item?(a(),v(P,{key:0,size:`small`,type:n(F)(e.status_item.value)},{default:u(()=>[c(_(e.status_item.label),1)]),_:2},1032,[`type`])):s(``,!0)]),d(`p`,null,_(e.content),1)]))),128)),De.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无记录`}))]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`])}}}),W=e({default:()=>G}),G=b(U,[[`__scopeId`,`data-v-287a1810`]]);export{W as n,ie as r,G as t}; \ No newline at end of file +import{r as e}from"./rolldown-runtime-BYbx6iT9.js";import{C as t,Ct as n,D as r,E as i,G as a,P as o,S as s,T as c,X as ee,Y as l,at as u,b as d,d as te,et as f,ht as p,m,ot as ne,q as h,rt as g,tn as _,x as v,y}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as b,l as x,s as S,t as C}from"./index-jhdMOnS8.js";import{l as w}from"./assets-CEyD64oq.js";import{a as T,c as E,h as D,i as O,m as k,o as A,p as j,s as M,u as N}from"./teachers-BIk-0G3l.js";import{a as P}from"./dict-BFb6lz5T.js";import{i as F,o as I,s as L}from"./demands-CJyXU85f.js";import{a as R,n as z,o as re}from"./teacherStar-DhP_EdY6.js";var B={class:`library-toolbar`},V={key:1,class:`text-mute`},H={key:0,class:`library-pager`},ie=S(r({__name:`TeacherPaperDialog`,props:o({teacherId:{},defaultAuthors:{},defaultSchoolName:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:o([`saved`],[`update:modelValue`]),setup(e,{emit:n}){let r=f(e,`modelValue`),o=e,m=n,h=p(`manual`),y=p(!1),b=p({title:``,authors:``,school_name:``,published_at:``,url:``,summary:``}),S=p(``),C=p(!1),T=p([]),E=p(1),D=p({current_page:1,per_page:10,total:0}),A=p([]),j=p();function M(){b.value={title:``,authors:o.defaultAuthors||``,school_name:o.defaultSchoolName||``,published_at:``,url:``,summary:``}}async function P(){o.teacherId&&(A.value=(await N(o.teacherId)).map(e=>e.id))}async function F(e=E.value){C.value=!0;try{let t=await w({page:e,page_size:D.value.per_page,keyword:S.value.trim()||void 0});T.value=t.items,D.value=t.meta,E.value=t.meta.current_page,j.value&&!t.items.some(e=>e.id===j.value)&&(j.value=void 0)}finally{C.value=!1}}function I(){E.value=1,F(1)}function L(e){A.value.includes(e.id)||(j.value=e.id)}async function R(){if(o.teacherId){if(!b.value.title.trim()||!b.value.authors.trim()){x.warning(`请填写标题与作者`);return}if(!b.value.published_at){x.warning(`请选择发表时间`);return}y.value=!0;try{await O(o.teacherId,{...b.value}),x.success(`已添加论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function z(){if(o.teacherId){if(!j.value){x.warning(`请选择要关联的论文`);return}if(A.value.includes(j.value)){x.warning(`该论文已关联此老师`);return}y.value=!0;try{await k(o.teacherId,j.value),x.success(`已关联论文`),r.value=!1,m(`saved`)}finally{y.value=!1}}}async function re(){h.value===`manual`?await R():await z()}return g(()=>[r.value,o.teacherId],([e])=>{e&&o.teacherId&&(h.value=`manual`,j.value=void 0,S.value=``,E.value=1,M(),P(),F(1))}),g(h,e=>{e===`library`&&r.value&&o.teacherId&&F(E.value)}),(e,n)=>{let o=l(`el-input`),f=l(`el-form-item`),p=l(`el-col`),m=l(`el-date-picker`),g=l(`el-row`),x=l(`el-form`),w=l(`el-tab-pane`),O=l(`el-button`),k=l(`el-table-column`),j=l(`el-tag`),M=l(`el-table`),N=l(`el-pagination`),P=l(`el-tabs`),R=l(`el-dialog`),z=ee(`loading`);return a(),v(R,{modelValue:r.value,"onUpdate:modelValue":n[10]||=e=>r.value=e,title:`论文`,width:`720px`,"destroy-on-close":``,"append-to-body":``},{footer:u(()=>[i(O,{onClick:n[9]||=e=>r.value=!1},{default:u(()=>[...n[13]||=[c(`取消`,-1)]]),_:1}),i(O,{type:`primary`,loading:y.value,onClick:re},{default:u(()=>[c(_(h.value===`manual`?`保存`:`确认关联`),1)]),_:1},8,[`loading`])]),default:u(()=>[i(P,{modelValue:h.value,"onUpdate:modelValue":n[8]||=e=>h.value=e},{default:u(()=>[i(w,{label:`手动录入`,name:`manual`},{default:u(()=>[i(x,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(f,{label:`标题`,required:``},{default:u(()=>[i(o,{modelValue:b.value.title,"onUpdate:modelValue":n[0]||=e=>b.value.title=e,placeholder:`请输入论文标题`},null,8,[`modelValue`])]),_:1}),i(g,{gutter:12},{default:u(()=>[i(p,{span:12},{default:u(()=>[i(f,{label:`作者`,required:``},{default:u(()=>[i(o,{modelValue:b.value.authors,"onUpdate:modelValue":n[1]||=e=>b.value.authors=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`学校`},{default:u(()=>[i(o,{modelValue:b.value.school_name,"onUpdate:modelValue":n[2]||=e=>b.value.school_name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`发表时间`,required:``},{default:u(()=>[i(m,{modelValue:b.value.published_at,"onUpdate:modelValue":n[3]||=e=>b.value.published_at=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:12},{default:u(()=>[i(f,{label:`链接`},{default:u(()=>[i(o,{modelValue:b.value.url,"onUpdate:modelValue":n[4]||=e=>b.value.url=e,placeholder:`https://example.com/paper`},null,8,[`modelValue`])]),_:1})]),_:1}),i(p,{span:24},{default:u(()=>[i(f,{label:`摘要`},{default:u(()=>[i(o,{modelValue:b.value.summary,"onUpdate:modelValue":n[5]||=e=>b.value.summary=e,type:`textarea`,rows:4,placeholder:`请输入论文摘要`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),i(w,{label:`从论文库选择`,name:`library`},{default:u(()=>[d(`div`,B,[i(o,{modelValue:S.value,"onUpdate:modelValue":n[6]||=e=>S.value=e,clearable:``,placeholder:`搜索标题、作者、学校…`,style:{width:`260px`},onKeyup:te(I,[`enter`])},null,8,[`modelValue`]),i(O,{type:`primary`,onClick:I},{default:u(()=>[...n[11]||=[c(`搜索`,-1)]]),_:1})]),ne((a(),v(M,{data:T.value,size:`small`,"highlight-current-row":``,class:`library-table`,"row-class-name":({row:e})=>A.value.includes(e.id)?`is-linked-row`:``,onRowClick:L,onCurrentChange:n[7]||=e=>{e&&L(e)}},{default:u(()=>[i(k,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(k,{prop:`authors`,label:`作者`,width:`120`,"show-overflow-tooltip":``}),i(k,{prop:`school_name`,label:`学校`,width:`120`,"show-overflow-tooltip":``}),i(k,{label:`状态`,width:`80`,align:`center`},{default:u(({row:e})=>[A.value.includes(e.id)?(a(),v(j,{key:0,size:`small`,type:`info`},{default:u(()=>[...n[12]||=[c(`已关联`,-1)]]),_:1})):(a(),t(`span`,V,`—`))]),_:1})]),_:1},8,[`data`,`row-class-name`])),[[z,C.value]]),D.value.total>0?(a(),t(`div`,H,[i(N,{layout:`total, prev, pager, next`,total:D.value.total,"page-size":D.value.per_page,"current-page":E.value,onCurrentChange:F},null,8,[`total`,`page-size`,`current-page`])])):s(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-d91269f1`]]),ae={class:`detail-body`},oe={key:0,class:`basic-info-block`},se={key:1,class:`basic-info-block`},ce={key:0,class:`crawl-uni-hint`},le={class:`uni-row`},ue={class:`star-preview`},de={key:0,class:`star-follow-rule`},fe={class:`section`},pe={class:`section-head`},me={class:`muted`},he={class:`section`},ge={class:`section-head`},_e={class:`muted`},ve={class:`summary-body`},ye={class:`follow-summary`},be={class:`log-head`},U=r({__name:`TeacherDetailDialog`,props:{modelValue:{type:Boolean},teacherId:{},readonly:{type:Boolean}},emits:[`update:modelValue`,`saved`],setup(e,{emit:r}){let o=C(),te=y(()=>o.isGridMember),f=e,S=y(()=>f.readonly===!0),w=y(()=>{let e=H.value?.name;return S.value?e?`查看 · ${e}`:`老师详情`:e?`编辑 · ${e}`:`编辑老师`});function O(e){return e.university_name?e.university_name:e.university_text?`${e.university_text}(未关联高校库)`:`—`}function k(e){return e.research_direction?e.research_direction:e.research_directions?.map(e=>e.name).join(`、`)||`—`}let B=r,V=p(!1),H=p(null),U=p(null),W=y(()=>R(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value)),G=p([]),K=p([]),q=p([]),xe=p([]),J=p([]),Se=p([]),Y=p({name:``,university_id:void 0,city:``,title:``,research_direction_ids:[],phone:``,email:``,star_level_dict_item_id:void 0,status_dict_item_id:void 0,next_follow_date:``}),X=p(!1),Z=p(!1),Q=p({name:``,city:``,province:``,longitude:``,latitude:``}),$=p(!1),Ce=p(!1),we=p(``),Te=p(!1),Ee=p(``),De=p([]);async function Oe(){let e=await j({page:1,page_size:200}),t=o.user?.grid_scope?.university_ids;J.value=t?.length?e.items.filter(e=>t.includes(e.id)):e.items}async function ke(){let e=await E(),t=o.user?.grid_scope?.research_direction_ids;Se.value=t?.length?e.research_directions.filter(e=>t.includes(e.id)):e.research_directions}function Ae(){Q.value={name:``,city:Y.value.city||``,province:``,longitude:``,latitude:``},X.value=!0}async function je(){let e=Q.value;if(!e.name.trim()){x.warning(`请填写高校名称`);return}if(!e.longitude.trim()||!e.latitude.trim()){x.warning(`请填写经度与纬度`);return}let t=Number(e.longitude),n=Number(e.latitude);if(Number.isNaN(t)||Number.isNaN(n)){x.warning(`经纬度须为有效数字`);return}Z.value=!0;try{let r=await T({name:e.name.trim(),city:e.city.trim()||null,province:e.province.trim()||null,longitude:t,latitude:n});J.value.some(e=>e.id===r.id)||J.value.push(r),Y.value.university_id=r.id,r.city&&(Y.value.city=r.city),X.value=!1,x.success(`高校已创建`)}finally{Z.value=!1}}async function Me(){if(f.teacherId){V.value=!0;try{let e=await M(f.teacherId);H.value=e,U.value=e.star_level_dict_item_id??null,Y.value={name:e.name||``,university_id:e.university_id??void 0,research_direction_ids:e.research_direction_ids?.length?[...e.research_direction_ids]:e.research_directions?.map(e=>e.id)||[],city:e.city||``,title:e.title||``,phone:e.phone||``,email:e.email||``,star_level_dict_item_id:e.star_level_dict_item_id??void 0,status_dict_item_id:e.status_dict_item_id??void 0,next_follow_date:e.next_follow_date||``};let[t,n]=await Promise.all([N(f.teacherId),L({teacher_id:f.teacherId,page:1,page_size:50})]);G.value=t,K.value=n.items}finally{V.value=!1}}}function Ne(){let e=Y.value;return e.name.trim()?e.university_id?e.city.trim()?e.title.trim()?e.research_direction_ids.length?e.status_dict_item_id?!0:(x.warning(`请选择状态`),!1):(x.warning(`请至少选择一个研究方向`),!1):(x.warning(`请填写职称`),!1):(x.warning(`请填写城市`),!1):(x.warning(`请选择高校,或点击「新建高校」`),!1):(x.warning(`请填写姓名`),!1)}async function Pe(){if(!f.teacherId||!H.value||!Ne())return;let e=(Y.value.star_level_dict_item_id??null)!==U.value;await D(f.teacherId,{name:Y.value.name.trim(),university_id:Y.value.university_id,city:Y.value.city.trim(),title:Y.value.title.trim(),research_direction_ids:Y.value.research_direction_ids,phone:Y.value.phone||null,email:Y.value.email||null,star_level_dict_item_id:Y.value.star_level_dict_item_id??null,status_dict_item_id:Y.value.status_dict_item_id,...e?{recalc_next_follow_date:!0}:{next_follow_date:Y.value.next_follow_date||null,recalc_next_follow_date:!1}}),x.success(`已保存`),B(`saved`),B(`update:modelValue`,!1)}function Fe(){let e=q.value.find(e=>e.id===Y.value.star_level_dict_item_id);Y.value.next_follow_date=re(e?.value)||``}function Ie(e){if(!e)return;let t=J.value.find(t=>t.id===e);t?.city&&!Y.value.city&&(Y.value.city=t.city)}function Le(){$.value=!0}async function Re(){f.teacherId&&(G.value=await N(f.teacherId))}async function ze(e){await b.confirm(`确定删除论文「${e.title}」?`,`确认删除`,{type:`warning`}),await A(f.teacherId,e.id),G.value=await N(f.teacherId)}function Be(e){we.value=e.summary||`暂无摘要`,Ce.value=!0}async function Ve(e){Ee.value=e.title,De.value=await I(e.id),Te.value=!0}return g(()=>[f.modelValue,f.teacherId],async([e,t])=>{if(e&&t){if(!q.value.length){let[e,t]=await Promise.all([P(`teacher_level`),P(`teacher_status`)]);q.value=e.items,xe.value=t.items,await Oe()}await ke(),await Me()}}),g(()=>Y.value.university_id,e=>Ie(e)),(r,o)=>{let f=l(`el-descriptions-item`),p=l(`el-descriptions`),g=l(`el-input`),y=l(`el-form-item`),b=l(`el-col`),x=l(`el-option`),C=l(`el-select`),T=l(`el-button`),E=l(`el-date-picker`),D=l(`el-row`),A=l(`el-form`),j=l(`el-table-column`),M=l(`el-link`),N=l(`el-table`),P=l(`el-tag`),I=l(`el-empty`),L=l(`el-dialog`),R=ee(`loading`);return a(),v(L,{"model-value":e.modelValue,title:w.value,width:`960px`,top:`4vh`,"destroy-on-close":``,"onUpdate:modelValue":o[21]||=e=>B(`update:modelValue`,e)},{footer:u(()=>[i(T,{onClick:o[10]||=e=>B(`update:modelValue`,!1)},{default:u(()=>[...o[31]||=[c(`关闭`,-1)]]),_:1}),S.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,class:`teachers-primary-btn`,onClick:Pe},{default:u(()=>[...o[32]||=[c(` 保存 `,-1)]]),_:1}))]),default:u(()=>[ne((a(),t(`div`,ae,[S.value&&H.value?(a(),t(`div`,oe,[o[22]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(p,{column:3,border:``,size:`small`,class:`view-desc`},{default:u(()=>[i(f,{label:`姓名`},{default:u(()=>[c(_(H.value.name),1)]),_:1}),i(f,{label:`高校`},{default:u(()=>[c(_(O(H.value)),1)]),_:1}),i(f,{label:`城市`},{default:u(()=>[c(_(H.value.city||`—`),1)]),_:1}),i(f,{label:`职称`},{default:u(()=>[c(_(H.value.title||`—`),1)]),_:1}),i(f,{label:`研究方向`,span:2},{default:u(()=>[c(_(k(H.value)),1)]),_:1}),i(f,{label:`电话`},{default:u(()=>[c(_(H.value.phone||`—`),1)]),_:1}),i(f,{label:`邮箱`},{default:u(()=>[c(_(H.value.email||`—`),1)]),_:1}),i(f,{label:`星级`},{default:u(()=>[c(_(n(z)(H.value.star_level_item?.value,H.value.star_level_item?.label)),1)]),_:1}),i(f,{label:`状态`},{default:u(()=>[c(_(H.value.status_item?.label||`—`),1)]),_:1}),i(f,{label:`下次跟进日期`},{default:u(()=>[c(_(H.value.next_follow_date||`—`),1)]),_:1}),H.value.source_item?.label?(a(),v(f,{key:0,label:`来源`},{default:u(()=>[c(_(H.value.source_item.label),1)]),_:1})):s(``,!0)]),_:1})])):(a(),t(`div`,se,[o[24]||=d(`h3`,{class:`basic-info-title`},`基本信息`,-1),i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(D,{gutter:12},{default:u(()=>[i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`姓名`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.name,"onUpdate:modelValue":o[0]||=e=>Y.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`高校`,required:``},{default:u(()=>[H.value?.university_text&&!Y.value.university_id?(a(),t(`p`,ce,` 论文抓取高校:`+_(H.value.university_text)+`(请在下拉中选择或新建以关联) `,1)):s(``,!0),d(`div`,le,[i(C,{modelValue:Y.value.university_id,"onUpdate:modelValue":o[1]||=e=>Y.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{flex:`1`}},{default:u(()=>[(a(!0),t(m,null,h(J.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),te.value?s(``,!0):(a(),v(T,{key:0,type:`primary`,size:`small`,class:`teachers-primary-btn`,onClick:Ae},{default:u(()=>[...o[23]||=[c(` 新建高校 `,-1)]]),_:1}))])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`城市`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.city,"onUpdate:modelValue":o[2]||=e=>Y.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`职称`,required:``},{default:u(()=>[i(g,{modelValue:Y.value.title,"onUpdate:modelValue":o[3]||=e=>Y.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:8},{default:u(()=>[i(y,{label:`研究方向`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.research_direction_ids,"onUpdate:modelValue":o[4]||=e=>Y.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(Se.value,e=>(a(),v(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`电话`},{default:u(()=>[i(g,{modelValue:Y.value.phone,"onUpdate:modelValue":o[5]||=e=>Y.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`邮箱`},{default:u(()=>[i(g,{modelValue:Y.value.email,"onUpdate:modelValue":o[6]||=e=>Y.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:4},{default:u(()=>[i(y,{label:`星级`},{default:u(()=>[i(C,{modelValue:Y.value.star_level_dict_item_id,"onUpdate:modelValue":o[7]||=e=>Y.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:Fe},{default:u(()=>[(a(!0),t(m,null,h(q.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),d(`span`,ue,_(n(z)(q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.value,q.value.find(e=>e.id===Y.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`状态`,required:``},{default:u(()=>[i(C,{modelValue:Y.value.status_dict_item_id,"onUpdate:modelValue":o[8]||=e=>Y.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:u(()=>[(a(!0),t(m,null,h(xe.value,e=>(a(),v(x,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),i(b,{xs:24,md:6},{default:u(()=>[i(y,{label:`下次跟进日期`},{default:u(()=>[i(E,{modelValue:Y.value.next_follow_date,"onUpdate:modelValue":o[9]||=e=>Y.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`选择日期`,style:{width:`100%`}},null,8,[`modelValue`]),W.value?(a(),t(`p`,de,_(W.value),1)):s(``,!0)]),_:1})]),_:1})]),_:1})]),_:1})])),d(`div`,fe,[d(`div`,pe,[o[26]||=d(`h3`,null,`论文列表`,-1),d(`span`,me,`共 `+_(G.value.length)+` 篇`,1),S.value?s(``,!0):(a(),v(T,{key:0,size:`small`,type:`primary`,plain:``,onClick:Le},{default:u(()=>[...o[25]||=[c(` 添加论文 `,-1)]]),_:1}))]),i(N,{data:G.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{prop:`title`,label:`标题`,"min-width":`200`,"show-overflow-tooltip":``}),i(j,{prop:`authors`,label:`作者`,width:`140`}),i(j,{prop:`school_name`,label:`学校`,width:`120`}),i(j,{prop:`published_at`,label:`发表时间`,width:`110`}),i(j,{label:`链接`,width:`70`},{default:u(({row:e})=>[e.url?(a(),v(M,{key:0,href:e.url,target:`_blank`},{default:u(()=>[...o[27]||=[c(`查看`,-1)]]),_:1},8,[`href`])):s(``,!0)]),_:1}),i(j,{label:`操作`,width:S.value?70:120},{default:u(({row:e})=>[i(T,{link:``,type:`primary`,onClick:t=>Be(e)},{default:u(()=>[...o[28]||=[c(`摘要`,-1)]]),_:1},8,[`onClick`]),S.value?s(``,!0):(a(),v(T,{key:0,link:``,type:`danger`,onClick:t=>ze(e)},{default:u(()=>[...o[29]||=[c(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1},8,[`width`])]),_:1},8,[`data`])]),d(`div`,he,[d(`div`,ge,[o[30]||=d(`h3`,null,`需求列表`,-1),d(`span`,_e,`共 `+_(K.value.length)+` 条`,1)]),i(N,{data:K.value,size:`small`,"row-key":`id`},{default:u(()=>[i(j,{label:`类型`,width:`100`},{default:u(({row:e})=>[i(P,{size:`small`,effect:`dark`},{default:u(()=>[c(_(e.type_item?.label),1)]),_:2},1024)]),_:1}),i(j,{prop:`title`,label:`标题`,"min-width":`180`,"show-overflow-tooltip":``}),i(j,{prop:`submitted_at`,label:`时间`,width:`110`}),i(j,{label:`处理状态`,width:`100`},{default:u(({row:e})=>[i(P,{type:n(F)(e.status_item?.value),size:`small`,effect:`dark`},{default:u(()=>[c(_(e.status_item?.label),1)]),_:2},1032,[`type`])]),_:1}),i(j,{label:`跟进记录`,width:`100`},{default:u(({row:e})=>[i(T,{size:`small`,onClick:t=>Ve(e)},{default:u(()=>[c(_(e.handle_logs_count||0)+`条记录 `,1)]),_:2},1032,[`onClick`])]),_:1})]),_:1},8,[`data`]),K.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无关联需求`,"image-size":64}))])])),[[R,V.value]]),i(L,{modelValue:X.value,"onUpdate:modelValue":o[17]||=e=>X.value=e,title:`新建高校`,width:`480px`,"append-to-body":``,"destroy-on-close":``},{footer:u(()=>[i(T,{onClick:o[16]||=e=>X.value=!1},{default:u(()=>[...o[33]||=[c(`取消`,-1)]]),_:1}),i(T,{type:`primary`,class:`teachers-primary-btn`,loading:Z.value,onClick:je},{default:u(()=>[...o[34]||=[c(` 保存 `,-1)]]),_:1},8,[`loading`])]),default:u(()=>[i(A,{"label-position":`top`,class:`form-small`},{default:u(()=>[i(y,{label:`高校名称`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.name,"onUpdate:modelValue":o[11]||=e=>Q.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`经度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.longitude,"onUpdate:modelValue":o[12]||=e=>Q.value.longitude=e,placeholder:`如:121.5031`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`纬度`,required:``},{default:u(()=>[i(g,{modelValue:Q.value.latitude,"onUpdate:modelValue":o[13]||=e=>Q.value.latitude=e,placeholder:`如:31.2970`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),i(D,{gutter:12},{default:u(()=>[i(b,{span:12},{default:u(()=>[i(y,{label:`省份`},{default:u(()=>[i(g,{modelValue:Q.value.province,"onUpdate:modelValue":o[14]||=e=>Q.value.province=e,placeholder:`如:上海市`},null,8,[`modelValue`])]),_:1})]),_:1}),i(b,{span:12},{default:u(()=>[i(y,{label:`城市`},{default:u(()=>[i(g,{modelValue:Q.value.city,"onUpdate:modelValue":o[15]||=e=>Q.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(L,{modelValue:Ce.value,"onUpdate:modelValue":o[18]||=e=>Ce.value=e,title:`论文摘要`,width:`520px`,"append-to-body":``},{default:u(()=>[d(`p`,ve,_(we.value),1)]),_:1},8,[`modelValue`]),i(ie,{modelValue:$.value,"onUpdate:modelValue":o[19]||=e=>$.value=e,"teacher-id":e.teacherId,"default-authors":H.value?.name||Y.value.name,"default-school-name":J.value.find(e=>e.id===Y.value.university_id)?.name||H.value?.university_name||``,onSaved:Re},null,8,[`modelValue`,`teacher-id`,`default-authors`,`default-school-name`]),i(L,{modelValue:Te.value,"onUpdate:modelValue":o[20]||=e=>Te.value=e,title:`需求跟进记录`,width:`640px`,"append-to-body":``},{default:u(()=>[d(`p`,ye,_(Ee.value),1),(a(!0),t(m,null,h(De.value,e=>(a(),t(`div`,{key:e.id,class:`log-card`},[d(`div`,be,[d(`strong`,null,_(e.operator_name),1),d(`span`,null,_(e.handled_at),1),e.status_item?(a(),v(P,{key:0,size:`small`,type:n(F)(e.status_item.value)},{default:u(()=>[c(_(e.status_item.label),1)]),_:2},1032,[`type`])):s(``,!0)]),d(`p`,null,_(e.content),1)]))),128)),De.value.length?s(``,!0):(a(),v(I,{key:0,description:`暂无记录`}))]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`])}}}),W=e({default:()=>G}),G=S(U,[[`__scopeId`,`data-v-287a1810`]]);export{W as n,ie as r,G as t}; \ No newline at end of file diff --git a/public/admin/assets/activities-D4iXOHhe.js b/public/admin/assets/activities-B_XgKYQ2.js similarity index 98% rename from public/admin/assets/activities-D4iXOHhe.js rename to public/admin/assets/activities-B_XgKYQ2.js index 1a84de1..591d6b5 100644 --- a/public/admin/assets/activities-D4iXOHhe.js +++ b/public/admin/assets/activities-B_XgKYQ2.js @@ -1 +1 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as ie,l as h,u as g}from"./index-CpW3rNmm.js";import{t as ae}from"./vue-quill.snow-CU-IQtel.js";import{t as _}from"./usePageLoad-DFTLo_Lv.js";import{a as v,c as y,d as b,f as oe,i as se,l as x,n as S,o as C,p as ce,r as le,s as ue,t as w,u as T}from"./activities-GFF4qxN4.js";import{a as de,i as fe,o as pe,s as me}from"./admin-list-DjncsyJC.js";import{a as E}from"./dict-CUGiftrt.js";import{a as he,i as ge,n as D,r as O,t as _e}from"./csv-export-CUhlQQMF.js";function ve(e,t){return D([`姓名`,`手机`,`公司`,`报名时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t(e.signed_up_at)]))}function ye(e,t,n){return D([`姓名`,`手机`,`公司`,`签到状态`,`签到时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t?e.session_checked_in_at?`已签到`:`未签到`:``,t?n(e.session_checked_in_at):``]))}var be={class:`list-page`},xe={class:`page-header`},Se={class:`list-filter-bar`},Ce={class:`table-row-actions`},we={class:`list-pager`},Te={class:`date-range`},Ee={class:`date-range`},De={class:`session-label-row`},Oe={class:`sessions-block`},ke={class:`quill-wrap`},Ae={class:`dialog-footer-inner`},je={class:`signup-head`},Me={class:`signup-head-row`},Ne={key:0,class:`session-tabs`},Pe={key:1,class:`text-mute`},Fe={class:`sub-toolbar signup-filter-bar`},Ie={class:`list-pager`},k=ie(n({__name:`index`,setup(n){let ie=[[`bold`,`italic`,`underline`],[{header:[2,3,!1]}],[{list:`ordered`},{list:`bullet`}],[`link`],[`clean`]],D=u(!1),k=u(!1),Le=u([]),A=u({current_page:1,per_page:20,total:0}),j=u(1),M=u(``),N=u(``),P=u(``),F=u(``),I=u([]),L=u(!1),R=u(null),z=u({title:``,activity_type_dict_item_id:void 0,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``}),B=u([]),Re=u(!1),V=u(null),H=u([]),ze=u([]),U=u({current_page:1,per_page:20,total:0}),W=u(1),G=u(``),K=u(``),q=u(``),J=u(!1),Be=u(!1),Ve=u([]),He=u(!1),Ue=u(null),We=u(``);async function Ge(){try{I.value=(await E(`activity_type`)).items}catch{g.warning(`活动类型字典加载失败,请执行 ActivityDictionarySeeder 或在字典中维护 activity_type`)}}async function Y(){D.value=!0;try{let e={page:j.value,page_size:A.value.per_page};M.value&&(e.keyword=M.value),N.value!==``&&(e.activity_type_dict_item_id=N.value),P.value!==``&&(e.progress_status=P.value),F.value!==``&&(e.published=F.value);let t=await ue(e);Le.value=t.items,A.value=t.meta}finally{D.value=!1}}function Ke(){j.value=1,Y()}function qe(){M.value=``,N.value=``,P.value=``,F.value=``,j.value=1,Y()}function Je(){B.value.push({title:``,starts_at:``,ends_at:``,venue:``,capacity:void 0})}function Ye(e){B.value.splice(e,1)}function Xe(){R.value=null,z.value={title:``,activity_type_dict_item_id:I.value[0]?.id,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``},B.value=[],L.value=!0}async function Ze(e){R.value=e;let t=await y(e.id);z.value={title:t.title,activity_type_dict_item_id:t.activity_type_dict_item_id??void 0,event_start_date:t.event_start_date||``,event_end_date:t.event_end_date||``,signup_start_date:t.signup_start_date||``,signup_end_date:t.signup_end_date||``,location:t.location||``,intro_html:t.intro_html||``},B.value=(await x(e.id)).map(e=>({id:e.id,title:e.title||``,starts_at:e.starts_at?e.starts_at.slice(0,16).replace(`T`,` `):``,ends_at:e.ends_at?e.ends_at.slice(0,16).replace(`T`,` `):``,venue:e.venue||``,capacity:e.capacity??void 0})),L.value=!0}function Qe(){return z.value.title?.trim()?z.value.activity_type_dict_item_id?!z.value.event_start_date||!z.value.event_end_date?(g.warning(`请填写活动日期`),!1):z.value.event_start_date>z.value.event_end_date?(g.warning(`活动结束日期不能早于开始日期`),!1):!z.value.signup_start_date||!z.value.signup_end_date?(g.warning(`请填写报名起止日期`),!1):z.value.signup_start_date>z.value.signup_end_date?(g.warning(`报名结束日期不能早于开始日期`),!1):!0:(g.warning(`请选择活动类型`),!1):(g.warning(`请填写活动名称`),!1)}function $e(e){return e.slice(0,10)}function et(e){let t=z.value.event_start_date,n=z.value.event_end_date;return!t||!n?!0:e.starts_at&&$e(e.starts_at)n?(g.warning(`场次「${e.title}」结束时间不能晚于活动结束日期`),!1):!0}function tt(e){let t=z.value.event_start_date,n=z.value.event_end_date;if(!t||!n)return!1;let r=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;return rn}function nt(){let e=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let t of e){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))return g.warning(`场次信息不完整:标题、开始时间、结束时间、名额均为必填,且名额须大于 0`),!1;if(t.starts_at>t.ends_at)return g.warning(`场次「${t.title}」结束时间不能早于开始时间`),!1;if(!et(t))return!1}return B.value.filter(e=>e.title?.trim()&&e.starts_at&&e.ends_at&&(e.capacity??0)>0).length?!0:(g.warning(`保存并发布前须至少添加一个完整场次(标题、开始/结束时间、名额均必填且名额大于 0)`),!1)}async function rt(e){let t=R.value?await x(e):[],n=new Set;for(let t of B.value){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))continue;if(!et(t))throw Error(`session_range_invalid`);let r={title:t.title.trim(),starts_at:`${t.starts_at}:00`,ends_at:`${t.ends_at}:00`,venue:t.venue||null,capacity:t.capacity};if(t.id)await ce(e,t.id,r),n.add(t.id);else{let t=await le(e,r);n.add(t.id)}}for(let r of t)n.has(r.id)||await v(e,r.id)}async function it(e){if(!Qe()||e===1&&!nt())return;let t=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let e of t)if((e.starts_at||e.ends_at)&&!et(e))return;let n={title:z.value.title.trim(),activity_type_dict_item_id:z.value.activity_type_dict_item_id,event_start_date:z.value.event_start_date,event_end_date:z.value.event_end_date,signup_start_date:z.value.signup_start_date,signup_end_date:z.value.signup_end_date,location:z.value.location||null,intro_html:z.value.intro_html||null,published:e};k.value=!0;try{let t;R.value?(await oe(R.value.id,n),t=R.value.id):t=(await S(n)).id,await rt(t),g.success(e===1?`已保存并发布`:`已暂存草稿`),L.value=!1,await Y()}catch(e){if(e instanceof Error&&e.message===`session_range_invalid`)return;throw e}finally{k.value=!1}}async function at(e){await h.confirm(`确定删除活动「${e.title}」?`,`提示`,{type:`warning`}),await se(e.id),g.success(`已删除`),await Y()}function X(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Z(e){return e.title?e.title:e.starts_at?e.starts_at.slice(0,10).replace(/-/g,`.`):`场次 #${e.id}`}function ot(e){return e?.starts_at?new Date(e.starts_at)<=new Date:!0}let st=()=>H.value.find(e=>e.id===q.value),Q=()=>ot(st());async function $(){if(!V.value)return;let e={page:W.value,page_size:U.value.per_page};G.value.trim()&&(e.keyword=G.value.trim()),q.value!==``&&(e.activity_session_id=q.value),K.value!==``&&(e.checkin_status=K.value);let t=await T(V.value.id,e);ze.value=t.items,U.value=t.meta}async function ct(e){V.value=e,Re.value=!0,W.value=1,G.value=``,K.value=``,H.value=await x(e.id),q.value=H.value[0]?.id??``,await $()}async function lt(e){q.value=e,W.value=1,await $()}function ut(){W.value=1,$()}function dt(){G.value=``,K.value=``,W.value=1,$()}async function ft(e){V.value&&(await h.confirm(`确定删除该报名记录?`,`提示`,{type:`warning`}),await C(V.value.id,e.id),await $(),await Y())}async function pt(e){!V.value||q.value===``||(await w(V.value.id,e.id,{activity_session_id:q.value}),g.success(`已完成手动补签`),await $())}function mt(e){Ue.value=e,We.value=he(e),He.value=!0}async function ht(){if(V.value){J.value=!0,Be.value=!0,Ve.value=[];try{let e=V.value.id,t=await b(e);Ve.value=await Promise.all(H.value.map(async n=>{let r=await b(e,{activity_session_id:n.id}),i=ot(n)?r.filter(e=>e.session_checked_in_at).length:0,a=t.filter(e=>e.activity_session_id===n.id);return{session:n,signup_count:a.length,checked_in_count:i,signupRows:a,signinRows:r}}))}catch{g.error(`导出数据加载失败`)}finally{Be.value=!1}}}function gt(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ve(e.signupRows,X);_e(`${t}_${n}_报名.csv`,r)}function _t(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ye(e.signinRows,ot(e.session),X);_e(`${t}_${n}_签到.csv`,r)}return _(async()=>{await Ge(),await Y()}),(n,u)=>{let h=s(`el-button`),g=s(`el-input`),_=s(`el-option`),v=s(`el-select`),y=s(`el-table-column`),b=s(`el-table`),oe=s(`el-pagination`),se=s(`el-card`),x=s(`el-form-item`),S=s(`el-col`),C=s(`el-date-picker`),ce=s(`el-input-number`),le=s(`el-row`),ue=s(`el-form`),w=s(`el-dialog`),T=s(`el-tag`),E=ee(`loading`);return i(),e(d,null,[l(`div`,be,[l(`div`,xe,[u[25]||=l(`h1`,{class:`page-title`},`活动管理`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:Xe},{default:c(()=>[...u[24]||=[o(`新建活动`,-1)]]),_:1})]),r(se,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,Se,[r(g,{modelValue:M.value,"onUpdate:modelValue":u[0]||=e=>M.value=e,placeholder:`搜索活动名称`,clearable:``,class:`filter-search`,onKeyup:ne(Ke,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:N.value,"onUpdate:modelValue":u[1]||=e=>N.value=e,clearable:``,placeholder:`活动类型`,class:`filter-select`,filterable:``},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(v,{modelValue:P.value,"onUpdate:modelValue":u[2]||=e=>P.value=e,clearable:``,placeholder:`活动状态`,class:`filter-select`},{default:c(()=>[r(_,{label:`未开始`,value:1}),r(_,{label:`进行中`,value:2}),r(_,{label:`已结束`,value:3})]),_:1},8,[`modelValue`]),r(v,{modelValue:F.value,"onUpdate:modelValue":u[3]||=e=>F.value=e,clearable:``,placeholder:`发布状态`,class:`filter-select`},{default:c(()=>[r(_,{label:`已发布`,value:1}),r(_,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:Ke},{default:c(()=>[...u[26]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:qe},{default:c(()=>[...u[27]||=[o(`重置`,-1)]]),_:1})]),re((i(),m(b,{data:Le.value,"row-key":`id`},{default:c(()=>[r(y,{prop:`title`,label:`活动名称`,"min-width":`160`,"show-overflow-tooltip":``}),r(y,{label:`活动类型`,width:`100`},{default:c(({row:e})=>[o(p(e.activity_type_item?.label??`—`),1)]),_:1}),r(y,{label:`场次`,width:`72`,align:`center`},{default:c(({row:e})=>[o(p(e.sessions_count??0),1)]),_:1}),r(y,{label:`活动日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.event_start_date,e.event_end_date)),1)]),_:1}),r(y,{label:`报名起止日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.signup_start_date,e.signup_end_date)),1)]),_:1}),r(y,{prop:`location`,label:`活动地点`,"min-width":`120`,"show-overflow-tooltip":``}),r(y,{label:`活动状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(pe)(e.progress_status)])},p(t(de)(e.progress_status)),3)]),_:1}),r(y,{label:`发布状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(me)(e.published)])},p(e.published===1?`已发布`:`未发布`),3)]),_:1}),r(y,{label:`操作`,width:`280`,fixed:`right`},{default:c(({row:e})=>[l(`div`,Ce,[r(h,{class:`btn-action-brand`,onClick:t=>ct(e)},{default:c(()=>[...u[28]||=[o(`报名与签到`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-primary`,onClick:t=>mt(e)},{default:c(()=>[...u[29]||=[o(`签到码`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>Ze(e)},{default:c(()=>[...u[30]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>at(e)},{default:c(()=>[...u[31]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[E,D.value]]),l(`div`,we,[r(oe,{"current-page":j.value,"onUpdate:currentPage":u[4]||=e=>j.value=e,layout:`total, prev, pager, next`,total:A.value.total,"page-size":A.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(w,{modelValue:L.value,"onUpdate:modelValue":u[16]||=e=>L.value=e,title:R.value?`编辑活动`:`新建活动`,width:`1200px`,top:`4vh`,"destroy-on-close":``,class:`activity-dialog`},{footer:c(()=>[l(`div`,Ae,[r(h,{onClick:u[13]||=e=>L.value=!1},{default:c(()=>[...u[37]||=[o(`取消`,-1)]]),_:1}),r(h,{loading:k.value,onClick:u[14]||=e=>it(0)},{default:c(()=>[...u[38]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(h,{type:`primary`,loading:k.value,onClick:u[15]||=e=>it(1)},{default:c(()=>[...u[39]||=[o(`保存并发布`,-1)]]),_:1},8,[`loading`])])]),default:c(()=>[r(ue,{"label-position":`top`,class:`activity-form`},{default:c(()=>[r(le,{gutter:16},{default:c(()=>[r(S,{span:8},{default:c(()=>[r(x,{label:`活动名称`,required:``},{default:c(()=>[r(g,{modelValue:z.value.title,"onUpdate:modelValue":u[5]||=e=>z.value.title=e,placeholder:`请输入活动名称`},null,8,[`modelValue`])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`活动类型`,required:``},{default:c(()=>[r(v,{modelValue:z.value.activity_type_dict_item_id,"onUpdate:modelValue":u[6]||=e=>z.value.activity_type_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`活动日期`,required:``},{default:c(()=>[l(`div`,Te,[r(C,{modelValue:z.value.event_start_date,"onUpdate:modelValue":u[7]||=e=>z.value.event_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[32]||=l(`span`,{class:`range-sep`},`至`,-1),r(C,{modelValue:z.value.event_end_date,"onUpdate:modelValue":u[8]||=e=>z.value.event_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`报名起止日期`,required:``},{default:c(()=>[l(`div`,Ee,[r(C,{modelValue:z.value.signup_start_date,"onUpdate:modelValue":u[9]||=e=>z.value.signup_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[33]||=l(`span`,{class:`range-sep`},`至`,-1),r(C,{modelValue:z.value.signup_end_date,"onUpdate:modelValue":u[10]||=e=>z.value.signup_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`活动地点`},{default:c(()=>[r(g,{modelValue:z.value.location,"onUpdate:modelValue":u[11]||=e=>z.value.location=e,placeholder:`请输入活动地点`},null,8,[`modelValue`])]),_:1})]),_:1}),r(S,{span:24},{default:c(()=>[r(x,{class:`session-form-item`},{label:c(()=>[l(`div`,De,[u[35]||=l(`span`,null,`活动场次`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create btn-label-action`,onClick:Je},{default:c(()=>[...u[34]||=[o(` 添加场次 `,-1)]]),_:1})])]),default:c(()=>[l(`div`,Oe,[(i(!0),e(d,null,f(B.value,(t,n)=>(i(),e(`div`,{key:n,class:`session-row`},[r(g,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`场次标题,如:上午场`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(C,{modelValue:t.starts_at,"onUpdate:modelValue":e=>t.starts_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`开始时间`,"disabled-date":tt,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(C,{modelValue:t.ends_at,"onUpdate:modelValue":e=>t.ends_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`结束时间`,"disabled-date":tt,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(g,{modelValue:t.venue,"onUpdate:modelValue":e=>t.venue=e,placeholder:`地点(可选)`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(ce,{modelValue:t.capacity,"onUpdate:modelValue":e=>t.capacity=e,min:1,placeholder:`名额`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(h,{type:`danger`,plain:``,size:`small`,class:`session-row-delete`,onClick:e=>Ye(n)},{default:c(()=>[...u[36]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})]),_:1}),r(S,{span:24},{default:c(()=>[r(x,{label:`活动简介`,class:`intro-form-item`},{default:c(()=>[l(`div`,ke,[r(t(ae),{content:z.value.intro_html,"onUpdate:content":u[12]||=e=>z.value.intro_html=e,"content-type":`html`,theme:`snow`,toolbar:ie},null,8,[`content`])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(ge,{modelValue:He.value,"onUpdate:modelValue":u[17]||=e=>He.value=e,"course-name":Ue.value?.title||``,"signin-code":We.value},null,8,[`modelValue`,`course-name`,`signin-code`]),r(w,{modelValue:Re.value,"onUpdate:modelValue":u[21]||=e=>Re.value=e,title:`活动报名与签到:${V.value?.title||``}`,width:`960px`,top:`5vh`,class:`signup-dialog`},{default:c(()=>[l(`div`,je,[l(`div`,Me,[H.value.length?(i(),e(`div`,Ne,[(i(!0),e(d,null,f(H.value,e=>(i(),m(h,{key:e.id,size:`small`,type:q.value===e.id?`primary`:`default`,onClick:t=>lt(e.id)},{default:c(()=>[o(p(Z(e)),1)]),_:2},1032,[`type`,`onClick`]))),128))])):(i(),e(`div`,Pe,`暂无场次,请先在活动中添加场次`)),r(h,{disabled:!H.value.length,onClick:ht},{default:c(()=>[...u[40]||=[o(`导出`,-1)]]),_:1},8,[`disabled`])])]),l(`div`,Fe,[r(g,{modelValue:G.value,"onUpdate:modelValue":u[18]||=e=>G.value=e,clearable:``,placeholder:`搜索姓名、手机、公司…`,style:{width:`220px`},onKeyup:ne(ut,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:K.value,"onUpdate:modelValue":u[19]||=e=>K.value=e,clearable:``,placeholder:`签到状态`,style:{width:`120px`}},{default:c(()=>[r(_,{label:`已签到`,value:1}),r(_,{label:`未签到`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:ut},{default:c(()=>[...u[41]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:dt},{default:c(()=>[...u[42]||=[o(`重置`,-1)]]),_:1})]),r(b,{data:ze.value,size:`small`,style:{"margin-top":`12px`}},{default:c(()=>[r(y,{prop:`name`,label:`姓名`,width:`100`}),r(y,{prop:`mobile`,label:`手机`,width:`130`}),r(y,{prop:`company`,label:`公司`,"min-width":`120`,"show-overflow-tooltip":``}),r(y,{label:`报名时间`,width:`170`},{default:c(({row:e})=>[o(p(X(e.signed_up_at)),1)]),_:1}),r(y,{label:`签到状态`,width:`100`},{default:c(({row:t})=>[Q()?(i(),e(d,{key:0},[t.session_checked_in_at?(i(),m(T,{key:0,type:`success`,size:`small`},{default:c(()=>[...u[43]||=[o(`已签到`,-1)]]),_:1})):(i(),m(T,{key:1,type:`info`,size:`small`},{default:c(()=>[...u[44]||=[o(`未签到`,-1)]]),_:1}))],64)):a(``,!0)]),_:1}),r(y,{label:`签到时间`,width:`170`},{default:c(({row:e})=>[o(p(Q()?X(e.session_checked_in_at):``),1)]),_:1}),r(y,{label:`操作`,width:`120`,fixed:`right`},{default:c(({row:e})=>[Q()&&!e.session_checked_in_at?(i(),m(h,{key:0,type:`primary`,link:``,onClick:t=>pt(e)},{default:c(()=>[...u[45]||=[o(` 手动补签 `,-1)]]),_:1},8,[`onClick`])):Q()&&e.session_checked_in_at?(i(),m(h,{key:1,type:`info`,link:``,disabled:``},{default:c(()=>[...u[46]||=[o(` 已完成 `,-1)]]),_:1})):a(``,!0),r(h,{type:`danger`,link:``,onClick:t=>ft(e)},{default:c(()=>[...u[47]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`]),l(`div`,Ie,[r(oe,{"current-page":W.value,"onUpdate:currentPage":u[20]||=e=>W.value=e,layout:`total, prev, pager, next`,total:U.value.total,"page-size":U.value.per_page,onCurrentChange:$},null,8,[`current-page`,`total`,`page-size`])])]),_:1},8,[`modelValue`,`title`]),r(w,{modelValue:J.value,"onUpdate:modelValue":u[23]||=e=>J.value=e,title:`${V.value?.title||``}报名表导出`,width:`720px`,"append-to-body":``},{footer:c(()=>[r(h,{onClick:u[22]||=e=>J.value=!1},{default:c(()=>[...u[50]||=[o(`关闭`,-1)]]),_:1})]),default:c(()=>[re((i(),m(b,{data:Ve.value,size:`small`},{default:c(()=>[r(y,{label:`场次`,"min-width":`140`},{default:c(({row:e})=>[o(p(Z(e.session)),1)]),_:1}),r(y,{prop:`signup_count`,label:`报名人数`,width:`100`}),r(y,{prop:`checked_in_count`,label:`已签到`,width:`90`}),r(y,{label:`报名导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>gt(e)},{default:c(()=>[...u[48]||=[o(`导出报名`,-1)]]),_:1},8,[`onClick`])]),_:1}),r(y,{label:`签到导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>_t(e)},{default:c(()=>[...u[49]||=[o(`导出签到`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[E,Be.value]])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-1730cf79`]]);export{k as default}; \ No newline at end of file +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as ne,ht as u,m as d,ot as re,q as f,tn as p,x as m}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as h,l as g,s as ie}from"./index-jhdMOnS8.js";import{t as ae}from"./vue-quill.snow-CU-IQtel.js";import{t as _}from"./usePageLoad-DFTLo_Lv.js";import{a as v,c as y,d as b,f as oe,i as se,l as x,n as S,o as C,p as ce,r as le,s as ue,t as w,u as T}from"./activities-ByMS-EcA.js";import{a as de,i as fe,o as pe,s as me}from"./admin-list-DjncsyJC.js";import{a as E}from"./dict-BFb6lz5T.js";import{a as he,i as ge,n as D,r as O,t as _e}from"./csv-export-BctnjsYJ.js";function ve(e,t){return D([`姓名`,`手机`,`公司`,`报名时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t(e.signed_up_at)]))}function ye(e,t,n){return D([`姓名`,`手机`,`公司`,`签到状态`,`签到时间`],e.map(e=>[e.name,e.mobile,e.company??`—`,t?e.session_checked_in_at?`已签到`:`未签到`:``,t?n(e.session_checked_in_at):``]))}var be={class:`list-page`},xe={class:`page-header`},Se={class:`list-filter-bar`},Ce={class:`table-row-actions`},we={class:`list-pager`},Te={class:`date-range`},Ee={class:`date-range`},De={class:`session-label-row`},Oe={class:`sessions-block`},ke={class:`quill-wrap`},Ae={class:`dialog-footer-inner`},je={class:`signup-head`},Me={class:`signup-head-row`},Ne={key:0,class:`session-tabs`},Pe={key:1,class:`text-mute`},Fe={class:`sub-toolbar signup-filter-bar`},Ie={class:`list-pager`},k=ie(n({__name:`index`,setup(n){let ie=[[`bold`,`italic`,`underline`],[{header:[2,3,!1]}],[{list:`ordered`},{list:`bullet`}],[`link`],[`clean`]],D=u(!1),k=u(!1),Le=u([]),A=u({current_page:1,per_page:20,total:0}),j=u(1),M=u(``),N=u(``),P=u(``),F=u(``),I=u([]),L=u(!1),R=u(null),z=u({title:``,activity_type_dict_item_id:void 0,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``}),B=u([]),Re=u(!1),V=u(null),H=u([]),ze=u([]),U=u({current_page:1,per_page:20,total:0}),W=u(1),G=u(``),K=u(``),q=u(``),J=u(!1),Be=u(!1),Ve=u([]),He=u(!1),Ue=u(null),We=u(``);async function Ge(){try{I.value=(await E(`activity_type`)).items}catch{g.warning(`活动类型字典加载失败,请执行 ActivityDictionarySeeder 或在字典中维护 activity_type`)}}async function Y(){D.value=!0;try{let e={page:j.value,page_size:A.value.per_page};M.value&&(e.keyword=M.value),N.value!==``&&(e.activity_type_dict_item_id=N.value),P.value!==``&&(e.progress_status=P.value),F.value!==``&&(e.published=F.value);let t=await ue(e);Le.value=t.items,A.value=t.meta}finally{D.value=!1}}function Ke(){j.value=1,Y()}function qe(){M.value=``,N.value=``,P.value=``,F.value=``,j.value=1,Y()}function Je(){B.value.push({title:``,starts_at:``,ends_at:``,venue:``,capacity:void 0})}function Ye(e){B.value.splice(e,1)}function Xe(){R.value=null,z.value={title:``,activity_type_dict_item_id:I.value[0]?.id,event_start_date:``,event_end_date:``,signup_start_date:``,signup_end_date:``,location:``,intro_html:``},B.value=[],L.value=!0}async function Ze(e){R.value=e;let t=await y(e.id);z.value={title:t.title,activity_type_dict_item_id:t.activity_type_dict_item_id??void 0,event_start_date:t.event_start_date||``,event_end_date:t.event_end_date||``,signup_start_date:t.signup_start_date||``,signup_end_date:t.signup_end_date||``,location:t.location||``,intro_html:t.intro_html||``},B.value=(await x(e.id)).map(e=>({id:e.id,title:e.title||``,starts_at:e.starts_at?e.starts_at.slice(0,16).replace(`T`,` `):``,ends_at:e.ends_at?e.ends_at.slice(0,16).replace(`T`,` `):``,venue:e.venue||``,capacity:e.capacity??void 0})),L.value=!0}function Qe(){return z.value.title?.trim()?z.value.activity_type_dict_item_id?!z.value.event_start_date||!z.value.event_end_date?(g.warning(`请填写活动日期`),!1):z.value.event_start_date>z.value.event_end_date?(g.warning(`活动结束日期不能早于开始日期`),!1):!z.value.signup_start_date||!z.value.signup_end_date?(g.warning(`请填写报名起止日期`),!1):z.value.signup_start_date>z.value.signup_end_date?(g.warning(`报名结束日期不能早于开始日期`),!1):!0:(g.warning(`请选择活动类型`),!1):(g.warning(`请填写活动名称`),!1)}function $e(e){return e.slice(0,10)}function et(e){let t=z.value.event_start_date,n=z.value.event_end_date;return!t||!n?!0:e.starts_at&&$e(e.starts_at)n?(g.warning(`场次「${e.title}」结束时间不能晚于活动结束日期`),!1):!0}function tt(e){let t=z.value.event_start_date,n=z.value.event_end_date;if(!t||!n)return!1;let r=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`;return rn}function nt(){let e=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let t of e){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))return g.warning(`场次信息不完整:标题、开始时间、结束时间、名额均为必填,且名额须大于 0`),!1;if(t.starts_at>t.ends_at)return g.warning(`场次「${t.title}」结束时间不能早于开始时间`),!1;if(!et(t))return!1}return B.value.filter(e=>e.title?.trim()&&e.starts_at&&e.ends_at&&(e.capacity??0)>0).length?!0:(g.warning(`保存并发布前须至少添加一个完整场次(标题、开始/结束时间、名额均必填且名额大于 0)`),!1)}async function rt(e){let t=R.value?await x(e):[],n=new Set;for(let t of B.value){if(!t.title?.trim()||!t.starts_at||!t.ends_at||!(t.capacity&&t.capacity>0))continue;if(!et(t))throw Error(`session_range_invalid`);let r={title:t.title.trim(),starts_at:`${t.starts_at}:00`,ends_at:`${t.ends_at}:00`,venue:t.venue||null,capacity:t.capacity};if(t.id)await ce(e,t.id,r),n.add(t.id);else{let t=await le(e,r);n.add(t.id)}}for(let r of t)n.has(r.id)||await v(e,r.id)}async function it(e){if(!Qe()||e===1&&!nt())return;let t=B.value.filter(e=>e.title?.trim()||e.starts_at||e.ends_at||e.venue||e.capacity);for(let e of t)if((e.starts_at||e.ends_at)&&!et(e))return;let n={title:z.value.title.trim(),activity_type_dict_item_id:z.value.activity_type_dict_item_id,event_start_date:z.value.event_start_date,event_end_date:z.value.event_end_date,signup_start_date:z.value.signup_start_date,signup_end_date:z.value.signup_end_date,location:z.value.location||null,intro_html:z.value.intro_html||null,published:e};k.value=!0;try{let t;R.value?(await oe(R.value.id,n),t=R.value.id):t=(await S(n)).id,await rt(t),g.success(e===1?`已保存并发布`:`已暂存草稿`),L.value=!1,await Y()}catch(e){if(e instanceof Error&&e.message===`session_range_invalid`)return;throw e}finally{k.value=!1}}async function at(e){await h.confirm(`确定删除活动「${e.title}」?`,`提示`,{type:`warning`}),await se(e.id),g.success(`已删除`),await Y()}function X(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`—`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Z(e){return e.title?e.title:e.starts_at?e.starts_at.slice(0,10).replace(/-/g,`.`):`场次 #${e.id}`}function ot(e){return e?.starts_at?new Date(e.starts_at)<=new Date:!0}let st=()=>H.value.find(e=>e.id===q.value),Q=()=>ot(st());async function $(){if(!V.value)return;let e={page:W.value,page_size:U.value.per_page};G.value.trim()&&(e.keyword=G.value.trim()),q.value!==``&&(e.activity_session_id=q.value),K.value!==``&&(e.checkin_status=K.value);let t=await T(V.value.id,e);ze.value=t.items,U.value=t.meta}async function ct(e){V.value=e,Re.value=!0,W.value=1,G.value=``,K.value=``,H.value=await x(e.id),q.value=H.value[0]?.id??``,await $()}async function lt(e){q.value=e,W.value=1,await $()}function ut(){W.value=1,$()}function dt(){G.value=``,K.value=``,W.value=1,$()}async function ft(e){V.value&&(await h.confirm(`确定删除该报名记录?`,`提示`,{type:`warning`}),await C(V.value.id,e.id),await $(),await Y())}async function pt(e){!V.value||q.value===``||(await w(V.value.id,e.id,{activity_session_id:q.value}),g.success(`已完成手动补签`),await $())}function mt(e){Ue.value=e,We.value=he(e),He.value=!0}async function ht(){if(V.value){J.value=!0,Be.value=!0,Ve.value=[];try{let e=V.value.id,t=await b(e);Ve.value=await Promise.all(H.value.map(async n=>{let r=await b(e,{activity_session_id:n.id}),i=ot(n)?r.filter(e=>e.session_checked_in_at).length:0,a=t.filter(e=>e.activity_session_id===n.id);return{session:n,signup_count:a.length,checked_in_count:i,signupRows:a,signinRows:r}}))}catch{g.error(`导出数据加载失败`)}finally{Be.value=!1}}}function gt(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ve(e.signupRows,X);_e(`${t}_${n}_报名.csv`,r)}function _t(e){if(!V.value)return;let t=O(V.value.title||`活动`),n=O(Z(e.session)),r=ye(e.signinRows,ot(e.session),X);_e(`${t}_${n}_签到.csv`,r)}return _(async()=>{await Ge(),await Y()}),(n,u)=>{let h=s(`el-button`),g=s(`el-input`),_=s(`el-option`),v=s(`el-select`),y=s(`el-table-column`),b=s(`el-table`),oe=s(`el-pagination`),se=s(`el-card`),x=s(`el-form-item`),S=s(`el-col`),C=s(`el-date-picker`),ce=s(`el-input-number`),le=s(`el-row`),ue=s(`el-form`),w=s(`el-dialog`),T=s(`el-tag`),E=ee(`loading`);return i(),e(d,null,[l(`div`,be,[l(`div`,xe,[u[25]||=l(`h1`,{class:`page-title`},`活动管理`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create`,onClick:Xe},{default:c(()=>[...u[24]||=[o(`新建活动`,-1)]]),_:1})]),r(se,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,Se,[r(g,{modelValue:M.value,"onUpdate:modelValue":u[0]||=e=>M.value=e,placeholder:`搜索活动名称`,clearable:``,class:`filter-search`,onKeyup:ne(Ke,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:N.value,"onUpdate:modelValue":u[1]||=e=>N.value=e,clearable:``,placeholder:`活动类型`,class:`filter-select`,filterable:``},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),r(v,{modelValue:P.value,"onUpdate:modelValue":u[2]||=e=>P.value=e,clearable:``,placeholder:`活动状态`,class:`filter-select`},{default:c(()=>[r(_,{label:`未开始`,value:1}),r(_,{label:`进行中`,value:2}),r(_,{label:`已结束`,value:3})]),_:1},8,[`modelValue`]),r(v,{modelValue:F.value,"onUpdate:modelValue":u[3]||=e=>F.value=e,clearable:``,placeholder:`发布状态`,class:`filter-select`},{default:c(()=>[r(_,{label:`已发布`,value:1}),r(_,{label:`未发布`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:Ke},{default:c(()=>[...u[26]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:qe},{default:c(()=>[...u[27]||=[o(`重置`,-1)]]),_:1})]),re((i(),m(b,{data:Le.value,"row-key":`id`},{default:c(()=>[r(y,{prop:`title`,label:`活动名称`,"min-width":`160`,"show-overflow-tooltip":``}),r(y,{label:`活动类型`,width:`100`},{default:c(({row:e})=>[o(p(e.activity_type_item?.label??`—`),1)]),_:1}),r(y,{label:`场次`,width:`72`,align:`center`},{default:c(({row:e})=>[o(p(e.sessions_count??0),1)]),_:1}),r(y,{label:`活动日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.event_start_date,e.event_end_date)),1)]),_:1}),r(y,{label:`报名起止日期`,"min-width":`150`},{default:c(({row:e})=>[o(p(t(fe)(e.signup_start_date,e.signup_end_date)),1)]),_:1}),r(y,{prop:`location`,label:`活动地点`,"min-width":`120`,"show-overflow-tooltip":``}),r(y,{label:`活动状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(pe)(e.progress_status)])},p(t(de)(e.progress_status)),3)]),_:1}),r(y,{label:`发布状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(me)(e.published)])},p(e.published===1?`已发布`:`未发布`),3)]),_:1}),r(y,{label:`操作`,width:`280`,fixed:`right`},{default:c(({row:e})=>[l(`div`,Ce,[r(h,{class:`btn-action-brand`,onClick:t=>ct(e)},{default:c(()=>[...u[28]||=[o(`报名与签到`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-primary`,onClick:t=>mt(e)},{default:c(()=>[...u[29]||=[o(`签到码`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>Ze(e)},{default:c(()=>[...u[30]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(h,{class:`btn-action-secondary`,onClick:t=>at(e)},{default:c(()=>[...u[31]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[E,D.value]]),l(`div`,we,[r(oe,{"current-page":j.value,"onUpdate:currentPage":u[4]||=e=>j.value=e,layout:`total, prev, pager, next`,total:A.value.total,"page-size":A.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(w,{modelValue:L.value,"onUpdate:modelValue":u[16]||=e=>L.value=e,title:R.value?`编辑活动`:`新建活动`,width:`1200px`,top:`4vh`,"destroy-on-close":``,class:`activity-dialog`},{footer:c(()=>[l(`div`,Ae,[r(h,{onClick:u[13]||=e=>L.value=!1},{default:c(()=>[...u[37]||=[o(`取消`,-1)]]),_:1}),r(h,{loading:k.value,onClick:u[14]||=e=>it(0)},{default:c(()=>[...u[38]||=[o(`暂存草稿`,-1)]]),_:1},8,[`loading`]),r(h,{type:`primary`,loading:k.value,onClick:u[15]||=e=>it(1)},{default:c(()=>[...u[39]||=[o(`保存并发布`,-1)]]),_:1},8,[`loading`])])]),default:c(()=>[r(ue,{"label-position":`top`,class:`activity-form`},{default:c(()=>[r(le,{gutter:16},{default:c(()=>[r(S,{span:8},{default:c(()=>[r(x,{label:`活动名称`,required:``},{default:c(()=>[r(g,{modelValue:z.value.title,"onUpdate:modelValue":u[5]||=e=>z.value.title=e,placeholder:`请输入活动名称`},null,8,[`modelValue`])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`活动类型`,required:``},{default:c(()=>[r(v,{modelValue:z.value.activity_type_dict_item_id,"onUpdate:modelValue":u[6]||=e=>z.value.activity_type_dict_item_id=e,placeholder:`请选择`,filterable:``,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,f(I.value,e=>(i(),m(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`活动日期`,required:``},{default:c(()=>[l(`div`,Te,[r(C,{modelValue:z.value.event_start_date,"onUpdate:modelValue":u[7]||=e=>z.value.event_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[32]||=l(`span`,{class:`range-sep`},`至`,-1),r(C,{modelValue:z.value.event_end_date,"onUpdate:modelValue":u[8]||=e=>z.value.event_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`报名起止日期`,required:``},{default:c(()=>[l(`div`,Ee,[r(C,{modelValue:z.value.signup_start_date,"onUpdate:modelValue":u[9]||=e=>z.value.signup_start_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始`,style:{width:`100%`}},null,8,[`modelValue`]),u[33]||=l(`span`,{class:`range-sep`},`至`,-1),r(C,{modelValue:z.value.signup_end_date,"onUpdate:modelValue":u[10]||=e=>z.value.signup_end_date=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束`,style:{width:`100%`}},null,8,[`modelValue`])])]),_:1})]),_:1}),r(S,{span:8},{default:c(()=>[r(x,{label:`活动地点`},{default:c(()=>[r(g,{modelValue:z.value.location,"onUpdate:modelValue":u[11]||=e=>z.value.location=e,placeholder:`请输入活动地点`},null,8,[`modelValue`])]),_:1})]),_:1}),r(S,{span:24},{default:c(()=>[r(x,{class:`session-form-item`},{label:c(()=>[l(`div`,De,[u[35]||=l(`span`,null,`活动场次`,-1),r(h,{type:`primary`,size:`small`,class:`btn-create btn-label-action`,onClick:Je},{default:c(()=>[...u[34]||=[o(` 添加场次 `,-1)]]),_:1})])]),default:c(()=>[l(`div`,Oe,[(i(!0),e(d,null,f(B.value,(t,n)=>(i(),e(`div`,{key:n,class:`session-row`},[r(g,{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,placeholder:`场次标题,如:上午场`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(C,{modelValue:t.starts_at,"onUpdate:modelValue":e=>t.starts_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`开始时间`,"disabled-date":tt,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(C,{modelValue:t.ends_at,"onUpdate:modelValue":e=>t.ends_at=e,type:`datetime`,"value-format":`YYYY-MM-DD HH:mm`,format:`YYYY-MM-DD HH:mm`,placeholder:`结束时间`,"disabled-date":tt,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(g,{modelValue:t.venue,"onUpdate:modelValue":e=>t.venue=e,placeholder:`地点(可选)`},null,8,[`modelValue`,`onUpdate:modelValue`]),r(ce,{modelValue:t.capacity,"onUpdate:modelValue":e=>t.capacity=e,min:1,placeholder:`名额`,style:{width:`100%`}},null,8,[`modelValue`,`onUpdate:modelValue`]),r(h,{type:`danger`,plain:``,size:`small`,class:`session-row-delete`,onClick:e=>Ye(n)},{default:c(()=>[...u[36]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]))),128))])]),_:1})]),_:1}),r(S,{span:24},{default:c(()=>[r(x,{label:`活动简介`,class:`intro-form-item`},{default:c(()=>[l(`div`,ke,[r(t(ae),{content:z.value.intro_html,"onUpdate:content":u[12]||=e=>z.value.intro_html=e,"content-type":`html`,theme:`snow`,toolbar:ie},null,8,[`content`])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r(ge,{modelValue:He.value,"onUpdate:modelValue":u[17]||=e=>He.value=e,"course-name":Ue.value?.title||``,"signin-code":We.value},null,8,[`modelValue`,`course-name`,`signin-code`]),r(w,{modelValue:Re.value,"onUpdate:modelValue":u[21]||=e=>Re.value=e,title:`活动报名与签到:${V.value?.title||``}`,width:`960px`,top:`5vh`,class:`signup-dialog`},{default:c(()=>[l(`div`,je,[l(`div`,Me,[H.value.length?(i(),e(`div`,Ne,[(i(!0),e(d,null,f(H.value,e=>(i(),m(h,{key:e.id,size:`small`,type:q.value===e.id?`primary`:`default`,onClick:t=>lt(e.id)},{default:c(()=>[o(p(Z(e)),1)]),_:2},1032,[`type`,`onClick`]))),128))])):(i(),e(`div`,Pe,`暂无场次,请先在活动中添加场次`)),r(h,{disabled:!H.value.length,onClick:ht},{default:c(()=>[...u[40]||=[o(`导出`,-1)]]),_:1},8,[`disabled`])])]),l(`div`,Fe,[r(g,{modelValue:G.value,"onUpdate:modelValue":u[18]||=e=>G.value=e,clearable:``,placeholder:`搜索姓名、手机、公司…`,style:{width:`220px`},onKeyup:ne(ut,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:K.value,"onUpdate:modelValue":u[19]||=e=>K.value=e,clearable:``,placeholder:`签到状态`,style:{width:`120px`}},{default:c(()=>[r(_,{label:`已签到`,value:1}),r(_,{label:`未签到`,value:0})]),_:1},8,[`modelValue`]),r(h,{type:`primary`,onClick:ut},{default:c(()=>[...u[41]||=[o(`搜索`,-1)]]),_:1}),r(h,{onClick:dt},{default:c(()=>[...u[42]||=[o(`重置`,-1)]]),_:1})]),r(b,{data:ze.value,size:`small`,style:{"margin-top":`12px`}},{default:c(()=>[r(y,{prop:`name`,label:`姓名`,width:`100`}),r(y,{prop:`mobile`,label:`手机`,width:`130`}),r(y,{prop:`company`,label:`公司`,"min-width":`120`,"show-overflow-tooltip":``}),r(y,{label:`报名时间`,width:`170`},{default:c(({row:e})=>[o(p(X(e.signed_up_at)),1)]),_:1}),r(y,{label:`签到状态`,width:`100`},{default:c(({row:t})=>[Q()?(i(),e(d,{key:0},[t.session_checked_in_at?(i(),m(T,{key:0,type:`success`,size:`small`},{default:c(()=>[...u[43]||=[o(`已签到`,-1)]]),_:1})):(i(),m(T,{key:1,type:`info`,size:`small`},{default:c(()=>[...u[44]||=[o(`未签到`,-1)]]),_:1}))],64)):a(``,!0)]),_:1}),r(y,{label:`签到时间`,width:`170`},{default:c(({row:e})=>[o(p(Q()?X(e.session_checked_in_at):``),1)]),_:1}),r(y,{label:`操作`,width:`120`,fixed:`right`},{default:c(({row:e})=>[Q()&&!e.session_checked_in_at?(i(),m(h,{key:0,type:`primary`,link:``,onClick:t=>pt(e)},{default:c(()=>[...u[45]||=[o(` 手动补签 `,-1)]]),_:1},8,[`onClick`])):Q()&&e.session_checked_in_at?(i(),m(h,{key:1,type:`info`,link:``,disabled:``},{default:c(()=>[...u[46]||=[o(` 已完成 `,-1)]]),_:1})):a(``,!0),r(h,{type:`danger`,link:``,onClick:t=>ft(e)},{default:c(()=>[...u[47]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`]),l(`div`,Ie,[r(oe,{"current-page":W.value,"onUpdate:currentPage":u[20]||=e=>W.value=e,layout:`total, prev, pager, next`,total:U.value.total,"page-size":U.value.per_page,onCurrentChange:$},null,8,[`current-page`,`total`,`page-size`])])]),_:1},8,[`modelValue`,`title`]),r(w,{modelValue:J.value,"onUpdate:modelValue":u[23]||=e=>J.value=e,title:`${V.value?.title||``}报名表导出`,width:`720px`,"append-to-body":``},{footer:c(()=>[r(h,{onClick:u[22]||=e=>J.value=!1},{default:c(()=>[...u[50]||=[o(`关闭`,-1)]]),_:1})]),default:c(()=>[re((i(),m(b,{data:Ve.value,size:`small`},{default:c(()=>[r(y,{label:`场次`,"min-width":`140`},{default:c(({row:e})=>[o(p(Z(e.session)),1)]),_:1}),r(y,{prop:`signup_count`,label:`报名人数`,width:`100`}),r(y,{prop:`checked_in_count`,label:`已签到`,width:`90`}),r(y,{label:`报名导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>gt(e)},{default:c(()=>[...u[48]||=[o(`导出报名`,-1)]]),_:1},8,[`onClick`])]),_:1}),r(y,{label:`签到导出`,width:`100`},{default:c(({row:e})=>[r(h,{type:`primary`,link:``,onClick:t=>_t(e)},{default:c(()=>[...u[49]||=[o(`导出签到`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[E,Be.value]])]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-1730cf79`]]);export{k as default}; \ No newline at end of file diff --git a/public/admin/assets/activities-GFF4qxN4.js b/public/admin/assets/activities-ByMS-EcA.js similarity index 91% rename from public/admin/assets/activities-GFF4qxN4.js rename to public/admin/assets/activities-ByMS-EcA.js index 8b1aa32..b95b8ec 100644 --- a/public/admin/assets/activities-GFF4qxN4.js +++ b/public/admin/assets/activities-ByMS-EcA.js @@ -1 +1 @@ -import{r as e}from"./index-CpW3rNmm.js";async function t(t){let{data:n}=await e.get(`/admin/v1/activities`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/activities/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/activities`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/activities/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/activities/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/activities/${t}/sessions`);return n.data.items}async function s(t,n){let{data:r}=await e.post(`/admin/v1/activities/${t}/sessions`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/activities/${t}/sessions/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/sessions/${n}`);return r}async function u(t,n){let{data:r}=await e.get(`/admin/v1/activities/${t}/signups`,{params:n});return r.data}async function d(e,t={}){let n=1,r=[];for(;;){let i=await u(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function f(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/signups/${n}`);return r}async function p(t,n,r){let{data:i}=await e.post(`/admin/v1/activities/${t}/signups/${n}/checkin`,r);return i}export{l as a,n as c,d,i as f,a as i,o as l,r as n,f as o,c as p,s as r,t as s,p as t,u}; \ No newline at end of file +import{r as e}from"./index-jhdMOnS8.js";async function t(t){let{data:n}=await e.get(`/admin/v1/activities`,{params:t});return n.data}async function n(t){let{data:n}=await e.get(`/admin/v1/activities/${t}`);return n.data}async function r(t){let{data:n}=await e.post(`/admin/v1/activities`,t);return n.data}async function i(t,n){let{data:r}=await e.put(`/admin/v1/activities/${t}`,n);return r}async function a(t){let{data:n}=await e.delete(`/admin/v1/activities/${t}`);return n}async function o(t){let{data:n}=await e.get(`/admin/v1/activities/${t}/sessions`);return n.data.items}async function s(t,n){let{data:r}=await e.post(`/admin/v1/activities/${t}/sessions`,n);return r.data}async function c(t,n,r){let{data:i}=await e.put(`/admin/v1/activities/${t}/sessions/${n}`,r);return i}async function l(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/sessions/${n}`);return r}async function u(t,n){let{data:r}=await e.get(`/admin/v1/activities/${t}/signups`,{params:n});return r.data}async function d(e,t={}){let n=1,r=[];for(;;){let i=await u(e,{...t,page:n,page_size:200});if(r.push(...i.items),n>=i.meta.last_page||i.items.length===0)break;n+=1}return r}async function f(t,n){let{data:r}=await e.delete(`/admin/v1/activities/${t}/signups/${n}`);return r}async function p(t,n,r){let{data:i}=await e.post(`/admin/v1/activities/${t}/signups/${n}/checkin`,r);return i}export{l as a,n as c,d,i as f,a as i,o as l,r as n,f as o,c as p,s as r,t as s,p as t,u}; \ No newline at end of file diff --git a/public/admin/assets/assets-Bc1CNRVa.js b/public/admin/assets/assets-CEyD64oq.js similarity index 94% rename from public/admin/assets/assets-Bc1CNRVa.js rename to public/admin/assets/assets-CEyD64oq.js index 50156d3..6102214 100644 --- a/public/admin/assets/assets-Bc1CNRVa.js +++ b/public/admin/assets/assets-CEyD64oq.js @@ -1 +1 @@ -import{r as e}from"./index-CpW3rNmm.js";async function t(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/universities/${t}`,n);return r.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/universities/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/papers`,{params:t});return n.data}async function o(){let{data:t}=await e.get(`/admin/v1/papers/filter-options`);return t.data}async function s(t){let{data:n}=await e.get(`/admin/v1/papers/${t}`);return n.data}async function c(t){let{data:n}=await e.delete(`/admin/v1/papers/${t}`);return n}async function l(t,n){let{data:r}=await e.post(`/admin/v1/papers/${t}/teachers`,{teacher_ids:n});return r}async function u(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs/resolve-url`,t);return n.data}async function d(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs`,t,{timeout:3e5});return n.data}async function f(t){let{data:n}=await e.get(`/admin/v1/crawl-jobs/${t}`);return n.data}async function p(t,n){let{data:r}=await e.get(`/admin/v1/crawl-jobs/${t}/items`,{params:n});return r.data}async function m(e,t){let n=[],r=1;for(;;){let i=await p(e,{...t,page:r,page_size:200});if(n.push(...i.items),r>=i.meta.last_page||i.items.length===0)break;r+=1}return n}async function h(t,n){let{data:r}=await e.post(`/admin/v1/crawl-jobs/${t}/import`,n);return r.data}async function g(){let{data:t}=await e.get(`/admin/v1/radar-map`);return t.data}export{m as a,o as c,t as d,h as f,r as h,i,a as l,d as m,n,f as o,u as p,c as r,s,l as t,g as u}; \ No newline at end of file +import{r as e}from"./index-jhdMOnS8.js";async function t(t){let{data:n}=await e.get(`/admin/v1/universities`,{params:t});return n.data}async function n(t){let{data:n}=await e.post(`/admin/v1/universities`,t);return n.data}async function r(t,n){let{data:r}=await e.put(`/admin/v1/universities/${t}`,n);return r.data}async function i(t){let{data:n}=await e.delete(`/admin/v1/universities/${t}`);return n}async function a(t){let{data:n}=await e.get(`/admin/v1/papers`,{params:t});return n.data}async function o(){let{data:t}=await e.get(`/admin/v1/papers/filter-options`);return t.data}async function s(t){let{data:n}=await e.get(`/admin/v1/papers/${t}`);return n.data}async function c(t){let{data:n}=await e.delete(`/admin/v1/papers/${t}`);return n}async function l(t,n){let{data:r}=await e.post(`/admin/v1/papers/${t}/teachers`,{teacher_ids:n});return r}async function u(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs/resolve-url`,t);return n.data}async function d(t){let{data:n}=await e.post(`/admin/v1/crawl-jobs`,t,{timeout:3e5});return n.data}async function f(t){let{data:n}=await e.get(`/admin/v1/crawl-jobs/${t}`);return n.data}async function p(t,n){let{data:r}=await e.get(`/admin/v1/crawl-jobs/${t}/items`,{params:n});return r.data}async function m(e,t){let n=[],r=1;for(;;){let i=await p(e,{...t,page:r,page_size:200});if(n.push(...i.items),r>=i.meta.last_page||i.items.length===0)break;r+=1}return n}async function h(t,n){let{data:r}=await e.post(`/admin/v1/crawl-jobs/${t}/import`,n);return r.data}async function g(){let{data:t}=await e.get(`/admin/v1/radar-map`);return t.data}export{m as a,o as c,t as d,h as f,r as h,i,a as l,d as m,n,f as o,u as p,c as r,s,l as t,g as u}; \ No newline at end of file diff --git a/public/admin/assets/audit-logs-CoCCqT2_.js b/public/admin/assets/audit-logs-DR4n46wf.js similarity index 97% rename from public/admin/assets/audit-logs-CoCCqT2_.js rename to public/admin/assets/audit-logs-DR4n46wf.js index 1346bf1..c144a6e 100644 --- a/public/admin/assets/audit-logs-CoCCqT2_.js +++ b/public/admin/assets/audit-logs-DR4n46wf.js @@ -1 +1 @@ -import{C as e,D as t,E as n,G as r,T as i,X as a,Y as o,at as s,b as c,d as l,ht as u,ot as d,x as f}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{r as p}from"./index-CpW3rNmm.js";import{t as m}from"./usePageLoad-DFTLo_Lv.js";async function h(e){let{data:t}=await p.get(`/admin/v1/operation-logs`,{params:e});return t.data}var g={class:`list-page`},_={class:`list-filter-bar`},v={class:`list-pager`},y=t({__name:`index`,setup(t){let p=u(!1),y=u([]),b=u({current_page:1,per_page:20,total:0}),x=u(1),S=u(``),C=u(``),w=u(``);async function T(){p.value=!0;try{let e=await h({page:x.value,page_size:b.value.per_page,keyword:S.value||void 0,from:C.value||void 0,to:w.value||void 0});y.value=e.items,b.value=e.meta}finally{p.value=!1}}function E(){x.value=1,T()}function D(){S.value=``,C.value=``,w.value=``,x.value=1,T()}return m(T),(t,u)=>{let m=o(`el-input`),h=o(`el-date-picker`),O=o(`el-button`),k=o(`el-table-column`),A=o(`el-table`),j=o(`el-pagination`),M=o(`el-card`),N=a(`loading`);return r(),e(`div`,g,[u[6]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`操作日志`)],-1),n(M,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[c(`div`,_,[n(m,{modelValue:S.value,"onUpdate:modelValue":u[0]||=e=>S.value=e,placeholder:`接口路径/操作人`,clearable:``,class:`filter-search`,onKeyup:l(E,[`enter`])},null,8,[`modelValue`]),n(h,{modelValue:C.value,"onUpdate:modelValue":u[1]||=e=>C.value=e,type:`datetime`,placeholder:`开始时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(h,{modelValue:w.value,"onUpdate:modelValue":u[2]||=e=>w.value=e,type:`datetime`,placeholder:`结束时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(O,{type:`primary`,onClick:E},{default:s(()=>[...u[4]||=[i(`搜索`,-1)]]),_:1}),n(O,{onClick:D},{default:s(()=>[...u[5]||=[i(`重置`,-1)]]),_:1})]),d((r(),f(A,{data:y.value,"row-key":`id`},{default:s(()=>[n(k,{prop:`operated_at`,label:`操作时间`,width:`180`}),n(k,{prop:`operator_name`,label:`操作人`,width:`120`}),n(k,{prop:`http_method`,label:`方法`,width:`80`}),n(k,{prop:`api_path`,label:`接口`,"min-width":`220`,"show-overflow-tooltip":``}),n(k,{prop:`action_label`,label:`操作项`,"min-width":`160`,"show-overflow-tooltip":``}),n(k,{prop:`ip`,label:`IP`,width:`140`}),n(k,{prop:`response_code`,label:`状态码`,width:`90`,align:`center`}),n(k,{prop:`duration_ms`,label:`耗时ms`,width:`90`,align:`center`})]),_:1},8,[`data`])),[[N,p.value]]),c(`div`,v,[n(j,{"current-page":x.value,"onUpdate:currentPage":u[3]||=e=>x.value=e,layout:`total, prev, pager, next`,total:b.value.total,"page-size":b.value.per_page,onCurrentChange:T},null,8,[`current-page`,`total`,`page-size`])])]),_:1})])}}});export{y as default}; \ No newline at end of file +import{C as e,D as t,E as n,G as r,T as i,X as a,Y as o,at as s,b as c,d as l,ht as u,ot as d,x as f}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{r as p}from"./index-jhdMOnS8.js";import{t as m}from"./usePageLoad-DFTLo_Lv.js";async function h(e){let{data:t}=await p.get(`/admin/v1/operation-logs`,{params:e});return t.data}var g={class:`list-page`},_={class:`list-filter-bar`},v={class:`list-pager`},y=t({__name:`index`,setup(t){let p=u(!1),y=u([]),b=u({current_page:1,per_page:20,total:0}),x=u(1),S=u(``),C=u(``),w=u(``);async function T(){p.value=!0;try{let e=await h({page:x.value,page_size:b.value.per_page,keyword:S.value||void 0,from:C.value||void 0,to:w.value||void 0});y.value=e.items,b.value=e.meta}finally{p.value=!1}}function E(){x.value=1,T()}function D(){S.value=``,C.value=``,w.value=``,x.value=1,T()}return m(T),(t,u)=>{let m=o(`el-input`),h=o(`el-date-picker`),O=o(`el-button`),k=o(`el-table-column`),A=o(`el-table`),j=o(`el-pagination`),M=o(`el-card`),N=a(`loading`);return r(),e(`div`,g,[u[6]||=c(`div`,{class:`page-header`},[c(`h1`,{class:`page-title`},`操作日志`)],-1),n(M,{shadow:`never`,class:`admin-list-card`},{default:s(()=>[c(`div`,_,[n(m,{modelValue:S.value,"onUpdate:modelValue":u[0]||=e=>S.value=e,placeholder:`接口路径/操作人`,clearable:``,class:`filter-search`,onKeyup:l(E,[`enter`])},null,8,[`modelValue`]),n(h,{modelValue:C.value,"onUpdate:modelValue":u[1]||=e=>C.value=e,type:`datetime`,placeholder:`开始时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(h,{modelValue:w.value,"onUpdate:modelValue":u[2]||=e=>w.value=e,type:`datetime`,placeholder:`结束时间`,"value-format":`YYYY-MM-DD HH:mm:ss`,style:{width:`190px`}},null,8,[`modelValue`]),n(O,{type:`primary`,onClick:E},{default:s(()=>[...u[4]||=[i(`搜索`,-1)]]),_:1}),n(O,{onClick:D},{default:s(()=>[...u[5]||=[i(`重置`,-1)]]),_:1})]),d((r(),f(A,{data:y.value,"row-key":`id`},{default:s(()=>[n(k,{prop:`operated_at`,label:`操作时间`,width:`180`}),n(k,{prop:`operator_name`,label:`操作人`,width:`120`}),n(k,{prop:`http_method`,label:`方法`,width:`80`}),n(k,{prop:`api_path`,label:`接口`,"min-width":`220`,"show-overflow-tooltip":``}),n(k,{prop:`action_label`,label:`操作项`,"min-width":`160`,"show-overflow-tooltip":``}),n(k,{prop:`ip`,label:`IP`,width:`140`}),n(k,{prop:`response_code`,label:`状态码`,width:`90`,align:`center`}),n(k,{prop:`duration_ms`,label:`耗时ms`,width:`90`,align:`center`})]),_:1},8,[`data`])),[[N,p.value]]),c(`div`,v,[n(j,{"current-page":x.value,"onUpdate:currentPage":u[3]||=e=>x.value=e,layout:`total, prev, pager, next`,total:b.value.total,"page-size":b.value.per_page,onCurrentChange:T},null,8,[`current-page`,`total`,`page-size`])])]),_:1})])}}});export{y as default}; \ No newline at end of file diff --git a/public/admin/assets/banners--S0zPkC0.js b/public/admin/assets/banners--S0zPkC0.js deleted file mode 100644 index 2fd56cd..0000000 --- a/public/admin/assets/banners--S0zPkC0.js +++ /dev/null @@ -1 +0,0 @@ -import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as ee,Xt as te,Y as s,at as c,b as l,d as u,ht as d,m as f,ot as p,q as m,tn as ne,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,r as v,u as y}from"./index-CpW3rNmm.js";import{t as b}from"./vue-quill.snow-CU-IQtel.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{s as S}from"./activities-GFF4qxN4.js";import{l as C}from"./courses-BmbVb4j4.js";import{t as w}from"./upload-D5ZZkqqP.js";import{r as T}from"./admin-list-DjncsyJC.js";async function E(e){let{data:t}=await v.get(`/admin/v1/banners`,{params:e});return t.data}async function D(e){let{data:t}=await v.get(`/admin/v1/banners/${e}`);return t.data}async function O(e){let{data:t}=await v.post(`/admin/v1/banners`,e);return t.data}async function k(e,t){let{data:n}=await v.put(`/admin/v1/banners/${e}`,t);return n.data}async function A(e){let{data:t}=await v.delete(`/admin/v1/banners/${e}`);return t}var re={class:`list-page`},ie={class:`page-header`},ae={class:`list-filter-bar`},oe={key:1,class:`text-mute`},se={class:`table-row-actions`},ce={class:`list-pager`},le={class:`upload-row`},j={key:0,class:`thumb-preview`},M=[`src`],N={class:`quill-wrap`},P=g(n({__name:`index`,setup(n){let g=[[`bold`,`italic`,`underline`],[{header:[2,3,!1]}],[{list:`ordered`},{list:`bullet`}],[`link`],[`clean`]],v=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`custom`,label:`自定义`}],P=d(!1),F=d(!1),I=d([]),L=d({current_page:1,per_page:20,total:0}),R=d(1),z=d(``),B=d(``),V=d(``),H=d(!1),U=d(null),W=d({type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),G=d([]),K=d([]),q=d(!1),J=d(!1);async function Y(){P.value=!0;try{let e={page:R.value,page_size:L.value.per_page};z.value&&(e.keyword=z.value),B.value&&(e.type=B.value),V.value!==``&&(e.status=V.value);let t=await E(e);I.value=t.items,L.value=t.meta}finally{P.value=!1}}function X(){R.value=1,Y()}function ue(){z.value=``,B.value=``,V.value=``,R.value=1,Y()}async function Z(e=``){q.value=!0;try{G.value=(await C({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{q.value=!1}}async function Q(e=``){J.value=!0;try{K.value=(await S({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{J.value=!1}}function de(e){W.value.course_id=void 0,W.value.activity_id=void 0,W.value.title=``,W.value.cover_url=``,W.value.content_html=``,e===`course`&&Z(),e===`activity`&&Q()}function fe(){U.value=null,W.value={type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},G.value=[],K.value=[],H.value=!0,Z()}async function pe(e){U.value=e;let t=await D(e.id);W.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},t.type===`course`&&t.course_id&&(G.value=[{id:t.course_id,title:t.course_title||`#${t.course_id}`}]),t.type===`activity`&&t.activity_id&&(K.value=[{id:t.activity_id,title:t.activity_title||`#${t.activity_id}`}]),H.value=!0,t.type===`course`&&Z(),t.type===`activity`&&Q()}function $(){if(W.value.type===`course`&&!W.value.course_id)return y.warning(`请选择课程`),!1;if(W.value.type===`activity`&&!W.value.activity_id)return y.warning(`请选择活动`),!1;if(W.value.type===`custom`){if(!W.value.title.trim())return y.warning(`请填写标题`),!1;if(!W.value.cover_url)return y.warning(`请上传封面图`),!1}return!0}async function me(){if(!$())return;let e={type:W.value.type,sort:W.value.sort,status:W.value.status,course_id:W.value.type===`course`?W.value.course_id:null,activity_id:W.value.type===`activity`?W.value.activity_id:null,title:W.value.type===`custom`?W.value.title.trim():null,cover_url:W.value.type===`custom`?W.value.cover_url:null,content_html:W.value.type===`custom`&&W.value.content_html?.replace(/<[^>]+>/g,``).trim()?W.value.content_html:null};F.value=!0;try{U.value?await k(U.value.id,e):await O(e),y.success(`已保存`),H.value=!1,await Y()}finally{F.value=!1}}async function he(e){await _.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await A(e.id),y.success(`已删除`),await Y()}async function ge(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await w(n);W.value.cover_url=t.url,y.success(`封面上传成功`),e.onSuccess?.({})}catch{y.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}return x(Y),(n,d)=>{let _=s(`el-button`),y=s(`el-input`),x=s(`el-option`),S=s(`el-select`),C=s(`el-table-column`),w=s(`el-image`),E=s(`el-table`),D=s(`el-pagination`),O=s(`el-card`),k=s(`el-form-item`),A=s(`el-col`),$=s(`el-input-number`),_e=s(`el-switch`),ve=s(`el-row`),ye=s(`el-upload`),be=s(`el-form`),xe=s(`el-dialog`),Se=ee(`loading`);return i(),e(f,null,[l(`div`,re,[l(`div`,ie,[d[15]||=l(`h1`,{class:`page-title`},`Banner图管理`,-1),r(_,{type:`primary`,size:`small`,class:`btn-create`,onClick:fe},{default:c(()=>[...d[14]||=[o(`新增 Banner`,-1)]]),_:1})]),r(O,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,ae,[r(y,{modelValue:z.value,"onUpdate:modelValue":d[0]||=e=>z.value=e,placeholder:`搜索标题、课程、活动…`,clearable:``,class:`filter-search`,onKeyup:u(X,[`enter`])},null,8,[`modelValue`]),r(S,{modelValue:B.value,"onUpdate:modelValue":d[1]||=e=>B.value=e,clearable:``,placeholder:`类型`,class:`filter-select`},{default:c(()=>[(i(),e(f,null,m(v,e=>r(x,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(S,{modelValue:V.value,"onUpdate:modelValue":d[2]||=e=>V.value=e,clearable:``,placeholder:`状态`,class:`filter-select`},{default:c(()=>[r(x,{label:`启用`,value:1}),r(x,{label:`停用`,value:0})]),_:1},8,[`modelValue`]),r(_,{type:`primary`,onClick:X},{default:c(()=>[...d[16]||=[o(`搜索`,-1)]]),_:1}),r(_,{onClick:ue},{default:c(()=>[...d[17]||=[o(`重置`,-1)]]),_:1})]),p((i(),h(E,{data:I.value,"row-key":`id`},{default:c(()=>[r(C,{prop:`type_label`,label:`类型`,width:`90`}),r(C,{prop:`summary`,label:`展示内容`,"min-width":`200`,"show-overflow-tooltip":``}),r(C,{label:`封面`,width:`100`,align:`center`},{default:c(({row:t})=>[t.type===`custom`&&t.cover_url?(i(),h(w,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,oe,`—`))]),_:1}),r(C,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(C,{label:`状态`,width:`90`,align:`center`},{default:c(({row:e})=>[l(`span`,{class:te([`status-badge`,t(T)(e.status)])},ne(e.status===1?`启用`:`停用`),3)]),_:1}),r(C,{label:`操作`,width:`160`,fixed:`right`},{default:c(({row:e})=>[l(`div`,se,[r(_,{class:`btn-action-secondary`,onClick:t=>pe(e)},{default:c(()=>[...d[18]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(_,{class:`btn-action-secondary`,onClick:t=>he(e)},{default:c(()=>[...d[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Se,P.value]]),l(`div`,ce,[r(D,{"current-page":R.value,"onUpdate:currentPage":d[3]||=e=>R.value=e,layout:`total, prev, pager, next`,total:L.value.total,"page-size":L.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(xe,{modelValue:H.value,"onUpdate:modelValue":d[13]||=e=>H.value=e,title:U.value?`编辑 Banner`:`新增 Banner`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`banner-dialog`},{footer:c(()=>[r(_,{onClick:d[12]||=e=>H.value=!1},{default:c(()=>[...d[22]||=[o(`取消`,-1)]]),_:1}),r(_,{type:`primary`,loading:F.value,onClick:me},{default:c(()=>[...d[23]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:c(()=>[r(be,{"label-position":`top`,class:`banner-form`},{default:c(()=>[r(ve,{gutter:16},{default:c(()=>[r(A,{span:8},{default:c(()=>[r(k,{label:`类型`,required:``},{default:c(()=>[r(S,{modelValue:W.value.type,"onUpdate:modelValue":d[4]||=e=>W.value.type=e,style:{width:`100%`},onChange:de},{default:c(()=>[(i(),e(f,null,m(v,e=>r(x,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(A,{span:8},{default:c(()=>[r(k,{label:`排序`,required:``},{default:c(()=>[r($,{modelValue:W.value.sort,"onUpdate:modelValue":d[5]||=e=>W.value.sort=e,min:0,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(A,{span:8},{default:c(()=>[r(k,{label:`状态`},{default:c(()=>[r(_e,{modelValue:W.value.status,"onUpdate:modelValue":d[6]||=e=>W.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),W.value.type===`course`?(i(),h(k,{key:0,label:`选择课程`,required:``},{default:c(()=>[r(S,{modelValue:W.value.course_id,"onUpdate:modelValue":d[7]||=e=>W.value.course_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索课程名称或编号`,"remote-method":Z,loading:q.value,style:{width:`100%`}},{default:c(()=>[(i(!0),e(f,null,m(G.value,e=>(i(),h(x,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),W.value.type===`activity`?(i(),h(k,{key:1,label:`选择活动`,required:``},{default:c(()=>[r(S,{modelValue:W.value.activity_id,"onUpdate:modelValue":d[8]||=e=>W.value.activity_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索活动名称`,"remote-method":Q,loading:J.value,style:{width:`100%`}},{default:c(()=>[(i(!0),e(f,null,m(K.value,e=>(i(),h(x,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),W.value.type===`custom`?(i(),e(f,{key:2},[r(k,{label:`标题`,required:``},{default:c(()=>[r(y,{modelValue:W.value.title,"onUpdate:modelValue":d[9]||=e=>W.value.title=e,placeholder:`请输入 Banner 标题`},null,8,[`modelValue`])]),_:1}),r(k,{label:`封面图`,required:``},{default:c(()=>[l(`div`,le,[r(ye,{"show-file-list":!1,accept:`image/*`,"http-request":ge},{default:c(()=>[r(_,{type:`primary`,plain:``,size:`small`},{default:c(()=>[...d[20]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),W.value.cover_url?(i(),h(_,{key:0,size:`small`,onClick:d[10]||=e=>W.value.cover_url=``},{default:c(()=>[...d[21]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),W.value.cover_url?(i(),e(`div`,j,[l(`img`,{src:W.value.cover_url,alt:`封面`},null,8,M)])):a(``,!0)]),_:1}),r(k,{label:`内容`,class:`intro-form-item`},{default:c(()=>[l(`div`,N,[r(t(b),{content:W.value.content_html,"onUpdate:content":d[11]||=e=>W.value.content_html=e,"content-type":`html`,theme:`snow`,toolbar:g},null,8,[`content`])])]),_:1})],64)):a(``,!0)]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-cc2d69e5`]]);export{P as default}; \ No newline at end of file diff --git a/public/admin/assets/banners-CBylDnQD.js b/public/admin/assets/banners-CBylDnQD.js new file mode 100644 index 0000000..3baa786 --- /dev/null +++ b/public/admin/assets/banners-CBylDnQD.js @@ -0,0 +1 @@ +import{C as e,Ct as t,D as n,E as r,G as i,S as a,T as o,X as s,Xt as c,Y as l,at as u,b as d,d as ee,ht as f,m as p,ot as te,q as m,tn as ne,x as h}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as g,l as _,r as v,s as y}from"./index-jhdMOnS8.js";import{t as b}from"./vue-quill.snow-CU-IQtel.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{s as S}from"./activities-ByMS-EcA.js";import{l as C}from"./courses-DjCB_SCT.js";import{t as w}from"./upload-DS3tvR-r.js";import{r as T}from"./admin-list-DjncsyJC.js";async function E(e){let{data:t}=await v.get(`/admin/v1/banners`,{params:e});return t.data}async function D(e){let{data:t}=await v.get(`/admin/v1/banners/${e}`);return t.data}async function O(e){let{data:t}=await v.post(`/admin/v1/banners`,e);return t.data}async function k(e,t){let{data:n}=await v.put(`/admin/v1/banners/${e}`,t);return n.data}async function A(e){let{data:t}=await v.delete(`/admin/v1/banners/${e}`);return t}var re={class:`list-page`},j={class:`page-header`},ie={class:`list-filter-bar`},ae={key:1,class:`text-mute`},oe={class:`table-row-actions`},se={class:`list-pager`},ce={class:`upload-row`},le={key:0,class:`thumb-preview`},M=[`src`],N={class:`quill-wrap`},P=y(n({__name:`index`,setup(n){let v=[[`bold`,`italic`,`underline`],[{header:[2,3,!1]}],[{list:`ordered`},{list:`bullet`}],[`link`],[`clean`]],y=[{value:`course`,label:`课程`},{value:`activity`,label:`活动`},{value:`custom`,label:`自定义`}],P=f(!1),F=f(!1),I=f([]),L=f({current_page:1,per_page:20,total:0}),R=f(1),z=f(``),B=f(``),V=f(``),H=f(!1),U=f(null),W=f({type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1}),G=f([]),K=f([]),q=f(!1),J=f(!1);async function Y(){P.value=!0;try{let e={page:R.value,page_size:L.value.per_page};z.value&&(e.keyword=z.value),B.value&&(e.type=B.value),V.value!==``&&(e.status=V.value);let t=await E(e);I.value=t.items,L.value=t.meta}finally{P.value=!1}}function X(){R.value=1,Y()}function ue(){z.value=``,B.value=``,V.value=``,R.value=1,Y()}async function Z(e=``){q.value=!0;try{G.value=(await C({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{q.value=!1}}async function Q(e=``){J.value=!0;try{K.value=(await S({keyword:e,page:1,page_size:30})).items.map(e=>({id:e.id,title:e.title}))}finally{J.value=!1}}function de(e){W.value.course_id=void 0,W.value.activity_id=void 0,W.value.title=``,W.value.cover_url=``,W.value.content_html=``,e===`course`&&Z(),e===`activity`&&Q()}function fe(){U.value=null,W.value={type:`course`,course_id:void 0,activity_id:void 0,title:``,cover_url:``,content_html:``,sort:0,status:1},G.value=[],K.value=[],H.value=!0,Z()}async function pe(e){U.value=e;let t=await D(e.id);W.value={type:t.type,course_id:t.course_id??void 0,activity_id:t.activity_id??void 0,title:t.title||``,cover_url:t.cover_url||``,content_html:t.content_html||``,sort:t.sort,status:t.status},t.type===`course`&&t.course_id&&(G.value=[{id:t.course_id,title:t.course_title||`#${t.course_id}`}]),t.type===`activity`&&t.activity_id&&(K.value=[{id:t.activity_id,title:t.activity_title||`#${t.activity_id}`}]),H.value=!0,t.type===`course`&&Z(),t.type===`activity`&&Q()}function $(){if(W.value.type===`course`&&!W.value.course_id)return _.warning(`请选择课程`),!1;if(W.value.type===`activity`&&!W.value.activity_id)return _.warning(`请选择活动`),!1;if(W.value.type===`custom`){if(!W.value.title.trim())return _.warning(`请填写标题`),!1;if(!W.value.cover_url)return _.warning(`请上传封面图`),!1}return!0}async function me(){if(!$())return;let e={type:W.value.type,sort:W.value.sort,status:W.value.status,course_id:W.value.type===`course`?W.value.course_id:null,activity_id:W.value.type===`activity`?W.value.activity_id:null,title:W.value.type===`custom`?W.value.title.trim():null,cover_url:W.value.type===`custom`?W.value.cover_url:null,content_html:W.value.type===`custom`&&W.value.content_html?.replace(/<[^>]+>/g,``).trim()?W.value.content_html:null};F.value=!0;try{U.value?await k(U.value.id,e):await O(e),_.success(`已保存`),H.value=!1,await Y()}finally{F.value=!1}}async function he(e){await g.confirm(`确定删除 Banner「${e.summary||e.id}」?`,`提示`,{type:`warning`}),await A(e.id),_.success(`已删除`),await Y()}async function ge(e){let t=e.file,n=t instanceof File?t:t.raw;if(!n){e.onError?.(Error(`no file`));return}try{let t=await w(n);W.value.cover_url=t.url,_.success(`封面上传成功`),e.onSuccess?.({})}catch{_.error(`封面上传失败`),e.onError?.(Error(`upload failed`))}}return x(Y),(n,f)=>{let g=l(`el-button`),_=l(`el-input`),x=l(`el-option`),S=l(`el-select`),C=l(`el-table-column`),w=l(`el-image`),E=l(`el-table`),D=l(`el-pagination`),O=l(`el-card`),k=l(`el-form-item`),A=l(`el-col`),$=l(`el-input-number`),_e=l(`el-switch`),ve=l(`el-row`),ye=l(`el-upload`),be=l(`el-form`),xe=l(`el-dialog`),Se=s(`loading`);return i(),e(p,null,[d(`div`,re,[d(`div`,j,[f[15]||=d(`h1`,{class:`page-title`},`Banner图管理`,-1),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:fe},{default:u(()=>[...f[14]||=[o(`新增 Banner`,-1)]]),_:1})]),r(O,{shadow:`never`,class:`admin-list-card`},{default:u(()=>[d(`div`,ie,[r(_,{modelValue:z.value,"onUpdate:modelValue":f[0]||=e=>z.value=e,placeholder:`搜索标题、课程、活动…`,clearable:``,class:`filter-search`,onKeyup:ee(X,[`enter`])},null,8,[`modelValue`]),r(S,{modelValue:B.value,"onUpdate:modelValue":f[1]||=e=>B.value=e,clearable:``,placeholder:`类型`,class:`filter-select`},{default:u(()=>[(i(),e(p,null,m(y,e=>r(x,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(S,{modelValue:V.value,"onUpdate:modelValue":f[2]||=e=>V.value=e,clearable:``,placeholder:`状态`,class:`filter-select`},{default:u(()=>[r(x,{label:`启用`,value:1}),r(x,{label:`停用`,value:0})]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:X},{default:u(()=>[...f[16]||=[o(`搜索`,-1)]]),_:1}),r(g,{onClick:ue},{default:u(()=>[...f[17]||=[o(`重置`,-1)]]),_:1})]),te((i(),h(E,{data:I.value,"row-key":`id`},{default:u(()=>[r(C,{prop:`type_label`,label:`类型`,width:`90`}),r(C,{prop:`summary`,label:`展示内容`,"min-width":`200`,"show-overflow-tooltip":``}),r(C,{label:`封面`,width:`100`,align:`center`},{default:u(({row:t})=>[t.type===`custom`&&t.cover_url?(i(),h(w,{key:0,src:t.cover_url,"preview-src-list":[t.cover_url],fit:`cover`,class:`list-cover-thumb`,"preview-teleported":``},null,8,[`src`,`preview-src-list`])):(i(),e(`span`,ae,`—`))]),_:1}),r(C,{prop:`sort`,label:`排序`,width:`80`,align:`center`}),r(C,{label:`状态`,width:`90`,align:`center`},{default:u(({row:e})=>[d(`span`,{class:c([`status-badge`,t(T)(e.status)])},ne(e.status===1?`启用`:`停用`),3)]),_:1}),r(C,{label:`操作`,width:`160`,fixed:`right`},{default:u(({row:e})=>[d(`div`,oe,[r(g,{class:`btn-action-secondary`,onClick:t=>pe(e)},{default:u(()=>[...f[18]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-secondary`,onClick:t=>he(e)},{default:u(()=>[...f[19]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[Se,P.value]]),d(`div`,se,[r(D,{"current-page":R.value,"onUpdate:currentPage":f[3]||=e=>R.value=e,layout:`total, prev, pager, next`,total:L.value.total,"page-size":L.value.per_page,onCurrentChange:Y},null,8,[`current-page`,`total`,`page-size`])])]),_:1})]),r(xe,{modelValue:H.value,"onUpdate:modelValue":f[13]||=e=>H.value=e,title:U.value?`编辑 Banner`:`新增 Banner`,width:`960px`,top:`4vh`,"destroy-on-close":``,class:`banner-dialog`},{footer:u(()=>[r(g,{onClick:f[12]||=e=>H.value=!1},{default:u(()=>[...f[22]||=[o(`取消`,-1)]]),_:1}),r(g,{type:`primary`,loading:F.value,onClick:me},{default:u(()=>[...f[23]||=[o(`保存`,-1)]]),_:1},8,[`loading`])]),default:u(()=>[r(be,{"label-position":`top`,class:`banner-form`},{default:u(()=>[r(ve,{gutter:16},{default:u(()=>[r(A,{span:8},{default:u(()=>[r(k,{label:`类型`,required:``},{default:u(()=>[r(S,{modelValue:W.value.type,"onUpdate:modelValue":f[4]||=e=>W.value.type=e,style:{width:`100%`},onChange:de},{default:u(()=>[(i(),e(p,null,m(y,e=>r(x,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(A,{span:8},{default:u(()=>[r(k,{label:`排序`,required:``},{default:u(()=>[r($,{modelValue:W.value.sort,"onUpdate:modelValue":f[5]||=e=>W.value.sort=e,min:0,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),r(A,{span:8},{default:u(()=>[r(k,{label:`状态`},{default:u(()=>[r(_e,{modelValue:W.value.status,"onUpdate:modelValue":f[6]||=e=>W.value.status=e,"active-value":1,"inactive-value":0},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1}),W.value.type===`course`?(i(),h(k,{key:0,label:`选择课程`,required:``},{default:u(()=>[r(S,{modelValue:W.value.course_id,"onUpdate:modelValue":f[7]||=e=>W.value.course_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索课程名称或编号`,"remote-method":Z,loading:q.value,style:{width:`100%`}},{default:u(()=>[(i(!0),e(p,null,m(G.value,e=>(i(),h(x,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),W.value.type===`activity`?(i(),h(k,{key:1,label:`选择活动`,required:``},{default:u(()=>[r(S,{modelValue:W.value.activity_id,"onUpdate:modelValue":f[8]||=e=>W.value.activity_id=e,filterable:``,remote:``,"reserve-keyword":``,placeholder:`搜索活动名称`,"remote-method":Q,loading:J.value,style:{width:`100%`}},{default:u(()=>[(i(!0),e(p,null,m(K.value,e=>(i(),h(x,{key:e.id,label:e.title,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`loading`])]),_:1})):a(``,!0),W.value.type===`custom`?(i(),e(p,{key:2},[r(k,{label:`标题`,required:``},{default:u(()=>[r(_,{modelValue:W.value.title,"onUpdate:modelValue":f[9]||=e=>W.value.title=e,placeholder:`请输入 Banner 标题`},null,8,[`modelValue`])]),_:1}),r(k,{label:`封面图`,required:``},{default:u(()=>[d(`div`,ce,[r(ye,{"show-file-list":!1,accept:`image/*`,"http-request":ge},{default:u(()=>[r(g,{type:`primary`,plain:``,size:`small`},{default:u(()=>[...f[20]||=[o(`上传图片`,-1)]]),_:1})]),_:1}),W.value.cover_url?(i(),h(g,{key:0,size:`small`,onClick:f[10]||=e=>W.value.cover_url=``},{default:u(()=>[...f[21]||=[o(`移除`,-1)]]),_:1})):a(``,!0)]),W.value.cover_url?(i(),e(`div`,le,[d(`img`,{src:W.value.cover_url,alt:`封面`},null,8,M)])):a(``,!0)]),_:1}),r(k,{label:`内容`,class:`intro-form-item`},{default:u(()=>[d(`div`,N,[r(t(b),{content:W.value.content_html,"onUpdate:content":f[11]||=e=>W.value.content_html=e,"content-type":`html`,theme:`snow`,toolbar:v},null,8,[`content`])])]),_:1})],64)):a(``,!0)]),_:1})]),_:1},8,[`modelValue`,`title`])],64)}}}),[[`__scopeId`,`data-v-cc2d69e5`]]);export{P as default}; \ No newline at end of file diff --git a/public/admin/assets/courses-DrBUu0T_.js b/public/admin/assets/courses-BzDRFiuu.js similarity index 89% rename from public/admin/assets/courses-DrBUu0T_.js rename to public/admin/assets/courses-BzDRFiuu.js index 623414b..2acb8ef 100644 --- a/public/admin/assets/courses-DrBUu0T_.js +++ b/public/admin/assets/courses-BzDRFiuu.js @@ -1,4 +1,4 @@ -import{a as e,i as t,n,r,t as i}from"./rolldown-runtime-BYbx6iT9.js";import{$t as a,At as o,Bt as s,C as c,Ct as l,D as u,Dt as d,E as f,Et as p,Ft as m,G as h,Gt as g,Jt as _,Kt as v,Nt as y,Ot as b,Pt as x,Rt as S,S as C,T as w,Tt as T,Vt as E,Wt as ee,X as D,Xt as te,Y as O,Yt as k,at as A,b as j,d as ne,en as re,f as ie,ht as M,i as ae,kt as N,m as oe,nn as se,o as ce,ot as le,q as ue,qt as de,rt as fe,tn as pe,u as me,wt as he,x as P,y as ge,zt as _e}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{c as ve,l as F,u as I}from"./index-CpW3rNmm.js";import{t as ye}from"./vue-quill.snow-CU-IQtel.js";import{t as be}from"./usePageLoad-DFTLo_Lv.js";import{a as xe,c as Se,i as Ce,l as we,n as Te,o as Ee,r as De,s as Oe,t as ke,u as Ae}from"./courses-BmbVb4j4.js";import{n as je}from"./upload-D5ZZkqqP.js";import{a as Me,i as Ne,o as Pe,s as Fe}from"./admin-list-DjncsyJC.js";import{f as Ie}from"./teachers-csfpCE52.js";import{a as Le,s as Re}from"./dict-CUGiftrt.js";import{i as ze,n as Be,o as Ve,r as He,t as Ue}from"./csv-export-CUhlQQMF.js";import{a as We}from"./news-1w94bh7k.js";function Ge(e){Object.getOwnPropertySymbols(e).forEach(t=>{mi[t]=e[t]})}function Ke(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:yi}}function qe(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=yi){return e&&(s?(e.helper(Pr),e.helper(ot(e.inSSR,l))):e.helper(at(e.inSSR,l)),o&&e.helper(Kr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function Je(e,t=yi){return{type:17,loc:t,elements:e}}function L(e,t=yi){return{type:15,loc:t,properties:e}}function R(e,t){return{type:16,loc:yi,key:v(e)?z(e,!0):e,value:t}}function z(e,t=!1,n=yi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Ye(e,t){return{type:5,loc:t,content:v(e)?z(e,!1,t):e}}function Xe(e,t=yi){return{type:8,loc:t,children:e}}function B(e,t=[],n=yi){return{type:14,loc:n,callee:e,arguments:t}}function Ze(e,t=void 0,n=!1,r=!1,i=yi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function V(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:yi}}function Qe(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:yi}}function $e(e){return{type:21,body:e,loc:yi}}function et(e){return{type:22,elements:e,loc:yi}}function tt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:yi}}function nt(e,t){return{type:24,left:e,right:t,loc:yi}}function rt(e){return{type:25,expressions:e,loc:yi}}function it(e){return{type:26,returns:e,loc:yi}}function at(e,t){return e||t?Lr:Rr}function ot(e,t){return e||t?Fr:Ir}function st(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(at(r,e.isComponent)),t(Pr),t(ot(r,e.isComponent)))}function ct(e){return e>=97&&e<=122||e>=65&&e<=90}function lt(e){return e===32||e===10||e===9||e===12||e===13}function ut(e){return e===47||e===62||lt(e)}function dt(e){let t=new Uint8Array(e.length);for(let n=0;n{mi[t]=e[t]})}function Ke(e,t=``){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:yi}}function qe(e,t,n,r,i,a,o,s=!1,c=!1,l=!1,u=yi){return e&&(s?(e.helper(Pr),e.helper(ot(e.inSSR,l))):e.helper(at(e.inSSR,l)),o&&e.helper(Kr)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:a,directives:o,isBlock:s,disableTracking:c,isComponent:l,loc:u}}function Je(e,t=yi){return{type:17,loc:t,elements:e}}function L(e,t=yi){return{type:15,loc:t,properties:e}}function R(e,t){return{type:16,loc:yi,key:v(e)?z(e,!0):e,value:t}}function z(e,t=!1,n=yi,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Ye(e,t){return{type:5,loc:t,content:v(e)?z(e,!1,t):e}}function Xe(e,t=yi){return{type:8,loc:t,children:e}}function B(e,t=[],n=yi){return{type:14,loc:n,callee:e,arguments:t}}function Ze(e,t=void 0,n=!1,r=!1,i=yi){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function V(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:yi}}function Qe(e,t,n=!1,r=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:r,needArraySpread:!1,loc:yi}}function $e(e){return{type:21,body:e,loc:yi}}function et(e){return{type:22,elements:e,loc:yi}}function tt(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:yi}}function nt(e,t){return{type:24,left:e,right:t,loc:yi}}function rt(e){return{type:25,expressions:e,loc:yi}}function it(e){return{type:26,returns:e,loc:yi}}function at(e,t){return e||t?Lr:Rr}function ot(e,t){return e||t?Fr:Ir}function st(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(at(r,e.isComponent)),t(Pr),t(ot(r,e.isComponent)))}function ct(e){return e>=97&&e<=122||e>=65&&e<=90}function lt(e){return e===32||e===10||e===9||e===12||e===13}function ut(e){return e===47||e===62||lt(e)}function dt(e){let t=new Uint8Array(e.length);for(let n=0;n{e&&Dt(e,t)});break;case`RestElement`:Dt(e.argument,t);break;case`AssignmentPattern`:Dt(e.left,t);break}return t}function Ot(e){return ji.includes(e.type)?Ot(e.expression):e}function kt(e){switch(e){case`Teleport`:case`teleport`:return Ar;case`Suspense`:case`suspense`:return jr;case`KeepAlive`:case`keep-alive`:return Mr;case`BaseTransition`:case`base-transition`:return Nr}}function At(e,t,n=t.length){return jt({offset:e.offset,line:e.line,column:e.column},t,n)}function jt(e,t,n=t.length){let r=0,i=-1;for(let e=0;ee.type===7&&e.name===`bind`&&(!e.arg||e.arg.type!==4||!e.arg.isStatic))}function Lt(e){return e.type===5||e.type===2}function Rt(e){return e.type===7&&e.name===`pre`}function zt(e){return e.type===7&&e.name===`slot`}function Bt(e){return e.type===1&&e.tagType===3}function Vt(e){return e.type===1&&e.tagType===2}function Ht(e,t=[]){if(e&&!v(e)&&e.type===14){let n=e.callee;if(!v(n)&&Ki.has(n))return Ht(e.arguments[0],t.concat(e))}return[e,t]}function Ut(e,t,n){let r,i=e.type===13?e.props:e.arguments[2],a=[],o;if(i&&!v(i)&&i.type===14){let e=Ht(i);i=e[0],a=e[1],o=a[a.length-1]}if(i==null||v(i))r=L([t]);else if(i.type===14){let e=i.arguments[0];!v(e)&&e.type===15?Wt(t,e)||e.properties.unshift(t):i.callee===ni?r=B(n.helper(Zr),[L([t]),i]):i.arguments.unshift(L([t])),!r&&(r=i)}else i.type===15?(Wt(t,i)||i.properties.unshift(t),r=i):(r=B(n.helper(Zr),[L([t]),i]),o&&o.callee===ti&&(o=a[a.length-2]));e.type===13?o?o.arguments[0]=r:e.props=r:o?o.arguments[0]=r:e.arguments[2]=r}function Wt(e,t){let n=!1;if(e.key.type===4){let r=e.key.content;n=t.properties.some(e=>e.key.type===4&&e.key.content===r)}return n}function Gt(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>t===`-`?`_`:e.charCodeAt(n).toString())}`}function Kt(e,t){if(!e||Object.keys(t).length===0)return!1;switch(e.type){case 1:for(let n=0;nKt(e,t));case 11:return Kt(e.source,t)?!0:e.children.some(e=>Kt(e,t));case 9:return e.branches.some(e=>Kt(e,t));case 10:return Kt(e.condition,t)?!0:e.children.some(e=>Kt(e,t));case 4:return!e.isStatic&&Pi(e.content)&&!!t[e.content];case 8:return e.children.some(e=>s(e)&&Kt(e,t));case 5:case 12:return Kt(e.content,t);case 2:case 3:case 20:return!1;default:return!1}}function qt(e){return e.type===14&&e.callee===fi?e.arguments[1].returns:e}function Jt(e){for(let t=0;t{let i=t.start.offset+n;return gn(e,!1,fn(i,i+e.length),0,+!!r)},s={source:o(a.trim(),n.indexOf(a,i.length)),value:void 0,key:void 0,index:void 0,finalized:!1},c=i.trim().replace(oa,``).trim(),l=i.indexOf(c),u=c.match(aa);if(u){c=c.replace(aa,``).trim();let e=u[1].trim(),t;if(e&&(t=n.indexOf(e,l+c.length),s.key=o(e,t,!0)),u[2]){let r=u[2].trim();r&&(s.index=o(r,n.indexOf(r,s.key?t+e.length:l+c.length),!0))}}return c&&(s.value=o(c,l,!0)),s}function Qt(e,t){return Xi.slice(e,t)}function $t(e){ia.inSFCRoot&&(Zi.innerLoc=fn(e+1,e+1)),dn(Zi);let{tag:t,ns:n}=Zi;n===0&&U.isPreTag(t)&&ta++,U.isVoidTag(t)?tn(Zi,e):(G.unshift(Zi),(n===1||n===2)&&(ia.inXML=!0)),Zi=null}function en(e,t,n){{let t=G[0]&&G[0].tag;t!==`script`&&t!==`style`&&e.includes(`&`)&&(e=U.decodeEntities(e,!1))}let r=G[0]||Yi,i=r.children[r.children.length-1];i&&i.type===2?(i.content+=e,mn(i.loc,n)):r.children.push({type:2,content:e,loc:fn(t,n)})}function tn(e,t,n=!1){n?mn(e.loc,rn(t,60)):mn(e.loc,nn(t,62)+1),ia.inSFCRoot&&(e.children.length?e.innerLoc.end=N({},e.children[e.children.length-1].loc.end):e.innerLoc.end=N({},e.innerLoc.start),e.innerLoc.source=Qt(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:r,ns:i,children:a}=e;if(na||(r===`slot`?e.tagType=2:an(e)?e.tagType=3:on(e)&&(e.tagType=1)),ia.inRCDATA||(e.children=cn(a)),i===0&&U.isIgnoreNewlineTag(r)){let e=a[0];e&&e.type===2&&(e.content=e.content.replace(/^\r?\n/,``))}i===0&&U.isPreTag(r)&&ta--,ra===e&&(na=ia.inVPre=!1,ra=null),ia.inXML&&(G[0]?G[0].ns:U.ns)===0&&(ia.inXML=!1);{let t=e.props;if(!ia.inSFCRoot&&pt(`COMPILER_NATIVE_TEMPLATE`,U)&&e.tag===`template`&&!an(e)){let t=G[0]||Yi,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}let n=t.find(e=>e.type===6&&e.name===`inline-template`);n&&mt(`COMPILER_INLINE_TEMPLATE`,U,n.loc)&&e.children.length&&(n.value={type:2,content:Qt(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function nn(e,t){let n=e;for(;Xi.charCodeAt(n)!==t&&n=0;)n--;return n}function an({tag:e,props:t}){if(e===`template`){for(let e=0;e64&&e<91}function cn(e){let t=U.whitespace!==`preserve`,n=!1;for(let r=0;re.type!==3);return t.length===1&&t[0].type===1&&!Vt(t[0])?t[0]:null}function Sn(e,t,n,r=!1,i=!1){let{children:a}=e,o=[];for(let t=0;t0){if(e>=2){s.codegenNode.patchFlag=-1,o.push(s);continue}}else{let e=s.codegenNode;if(e.type===13){let t=e.patchFlag;if((t===void 0||t===512||t===1)&&Tn(s,n)>=2){let t=En(s);t&&(e.props=n.hoist(t))}e.dynamicProps&&=n.hoist(e.dynamicProps)}}}else if(s.type===12&&(r?0:Cn(s,n))>=2){s.codegenNode.type===14&&s.codegenNode.arguments.length>0&&s.codegenNode.arguments.push(`-1`),o.push(s);continue}if(s.type===1){let t=s.tagType===1;t&&n.scopes.vSlot++,Sn(s,e,n,!1,i),t&&n.scopes.vSlot--}else if(s.type===11)Sn(s,e,n,s.children.length===1,!0);else if(s.type===9)for(let t=0;te.key===t||e.key.content===t);return n&&n.value}}o.length&&n.transformHoist&&n.transformHoist(a,n,e)}function Cn(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(e.tagType!==0)return 0;let r=n.get(e);if(r!==void 0)return r;let i=e.codegenNode;if(i.type!==13||i.isBlock&&e.tag!==`svg`&&e.tag!==`foreignObject`&&e.tag!==`math`)return 0;if(i.patchFlag===void 0){let r=3,a=Tn(e,t);if(a===0)return n.set(e,0),0;a1)for(let i=0;in&&(D.childIndex--,D.onNodeRemoved()),D.parent.children.splice(n,1)},onNodeRemoved:p,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){v(e)&&(e=z(e)),D.hoists.push(e);let t=z(`_hoisted_${D.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let r=Qe(D.cached.length,e,t,n);return D.cached.push(r),r}};return D.filters=new Set,D}function On(e,t){let n=Dn(e,t);jn(e,n),t.hoistStatic&&bn(e,n),t.ssr||kn(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function kn(e,t){let{helper:n}=t,{children:r}=e;if(r.length===1){let n=xn(e);if(n&&n.codegenNode){let r=n.codegenNode;r.type===13&&st(r,t),e.codegenNode=r}else e.codegenNode=r[0]}else r.length>1&&(e.codegenNode=qe(t,n(kr),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}function An(e,t){let n=0,r=()=>{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(e.type===1){let{props:i}=e;if(e.tagType===3&&i.some(zt))return;let a=[];for(let o=0;o0,p=!a&&r!==`module`;if(Fn(e,n),i(`function ${u?`ssrRender`:`render`}(${(u?[`_ctx`,`_push`,`_parent`,`_attrs`]:[`_ctx`,`_cache`]).join(`, `)}) {`),o(),p&&(i(`with (_ctx) {`),o(),f&&(i(`const { ${d.map(da).join(`, `)} } = _Vue @@ -8,9 +8,9 @@ import{a as e,i as t,n,r,t as i}from"./rolldown-runtime-BYbx6iT9.js";import{$t a `,-1)),Ln(e.hoists,t),a(),i(`return `)}function In(e,t,{helper:n,push:r,newline:i,isTS:a}){let o=n(t===`filter`?Gr:t===`component`?Hr:Wr);for(let n=0;n3||!1;t.push(`[`),n&&t.indent(),zn(e,t,n),n&&t.deindent(),t.push(`]`)}function zn(e,t,n=!1,r=!0){let{push:i,newline:a}=t;for(let o=0;oe||`null`)}function Yn(e,t){let{push:n,helper:r,pure:i}=t,a=v(e.callee)?e.callee:r(e.callee);i&&n(ua),n(a+`(`,-2,e),zn(e.arguments,t),n(`)`)}function Xn(e,t){let{push:n,indent:r,deindent:i,newline:a}=t,{properties:o}=e;if(!o.length){n(`{}`,-2,e);return}let s=o.length>1||!1;n(s?`{`:`{ `),s&&r();for(let e=0;e `),(c||s)&&(n(`{`),r()),o?(c&&n(`return `),x(o)?Rn(o,t):Bn(o,t)):s&&Bn(s,t),(c||s)&&(i(),n(`}`)),l&&(e.isNonScopedSlot&&n(`, undefined, true`),n(`)`))}function $n(e,t){let{test:n,consequent:r,alternate:i,newline:a}=e,{push:o,indent:s,deindent:c,newline:l}=t;if(n.type===4){let e=!Pi(n.content);e&&o(`(`),Hn(n,t),e&&o(`)`)}else o(`(`),Bn(n,t),o(`)`);a&&s(),t.indentLevel++,a||o(` `),o(`? `),Bn(r,t),t.indentLevel--,a&&l(),a||o(` `),o(`: `);let u=i.type===19;u||t.indentLevel++,Bn(i,t),u||t.indentLevel--,a&&c(!0)}function er(e,t){let{push:n,helper:r,indent:i,deindent:a,newline:o}=t,{needPauseTracking:s,needArraySpread:c}=e;c&&n(`[...(`),n(`_cache[${e.index}] || (`),s&&(i(),n(`${r(oi)}(-1`),e.inVOnce&&n(`, true`),n(`),`),o(),n(`(`)),n(`_cache[${e.index}] = `),Bn(e.value,t),s&&(n(`).cacheIndex = ${e.index},`),o(),n(`${r(oi)}(1),`),o(),n(`_cache[${e.index}]`),a()),n(`)`),c&&n(`)]`)}function tr(e,t,n=!1,r=!1,i=Object.create(t.identifiers)){return e}function nr(e){return v(e)?e:e.type===4?e.content:e.children.map(nr).join(``)}function rr(e,t,n,r){if(t.name!==`else`&&(!t.exp||!t.exp.content.trim())){let r=t.exp?t.exp.loc:e.loc;n.onError(H(28,t.loc)),t.exp=z(`true`,!1,r)}if(t.name===`if`){let i=ir(e,t),a={type:9,loc:pn(e.loc),branches:[i]};if(n.replaceNode(a),r)return r(a,i,!0)}else{let i=n.parent.children,a=i.indexOf(e);for(;a-->=-1;){let o=i[a];if(o&&Xt(o)){n.removeNode(o);continue}if(o&&o.type===9){(t.name===`else-if`||t.name===`else`)&&o.branches[o.branches.length-1].condition===void 0&&n.onError(H(30,e.loc)),n.removeNode();let i=ir(e,t);o.branches.push(i);let a=r&&r(o,i,!1);jn(i,n),a&&a(),n.currentNode=null}else n.onError(H(30,e.loc));break}}}function ir(e,t){let n=e.tagType===3;return{type:10,loc:e.loc,condition:t.name===`else`?void 0:t.exp,children:n&&!Nt(e,`for`)?e.children:[e],userKey:Pt(e,`key`),isTemplateIf:n}}function ar(e,t,n){return e.condition?V(e.condition,or(e,t,n),B(n.helper(zr),[`""`,`true`])):or(e,t,n)}function or(e,t,n){let{helper:r}=n,i=R(`key`,z(`${t}`,!1,yi,2)),{children:a}=e,o=a[0];if(a.length!==1||o.type!==1)if(a.length===1&&o.type===11){let e=o.codegenNode;return Ut(e,i,n),e}else return qe(n,r(kr),L([i]),a,64,void 0,void 0,!0,!1,!1,e.loc);else{let e=o.codegenNode,t=qt(e);return t.type===13&&st(t,n),Ut(t,i,n),e}}function sr(e){for(;;)if(e.type===19)if(e.alternate.type===19)e=e.alternate;else return e;else e.type===20&&(e=e.value)}function cr(e,t,n,r){if(!t.exp){n.onError(H(31,t.loc));return}let i=t.forParseResult;if(!i){n.onError(H(32,t.loc));return}lr(i,n);let{addIdentifiers:a,removeIdentifiers:o,scopes:s}=n,{source:c,value:l,key:u,index:d}=i,f={type:11,loc:t.loc,source:c,valueAlias:l,keyAlias:u,objectIndexAlias:d,parseResult:i,children:Bt(e)?e.children:[e]};n.replaceNode(f),s.vFor++;let p=r&&r(f);return()=>{s.vFor--,p&&p()}}function lr(e,t){e.finalized||=!0}function ur({value:e,key:t,index:n},r=[]){return dr([e,t,n,...r])}function dr(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map((e,t)=>e||z(`_`.repeat(t+1),!1))}function fr(e,t,n=va){t.helper(li);let{children:r,loc:i}=e,a=[],o=[],s=t.scopes.vSlot>0||t.scopes.vFor>0,c=Nt(e,`slot`,!0);if(c){let{arg:e,exp:t}=c;e&&!Mi(e)&&(s=!0),a.push(R(e||z(`default`,!0),n(t,void 0,r,i)))}let l=!1,u=!1,d=[],f=new Set,p=0;for(let e=0;e{let a=n(e,void 0,r,i);return t.compatConfig&&(a.isNonScopedSlot=!0),R(`default`,a)};l?d.length&&!d.every(Yt)&&(u?t.onError(H(39,d[0].loc)):a.push(e(void 0,d))):a.push(e(void 0,r))}let m=s?2:mr(e.children)?3:1,h=L(a.concat(R(`_`,z(m+``,!1))),i);return o.length&&(h=B(t.helper(Yr),[h,Je(o)])),{slots:h,hasDynamicSlots:s}}function pr(e,t,n){let r=[R(`name`,e),R(`fn`,t)];return n!=null&&r.push(R(`key`,z(String(n),!0))),L(r)}function mr(e){for(let t=0;t0,p=!1,h=0,g=!1,_=!1,v=!1,y=!1,b=!1,x=!1,S=[],C=e=>{l.length&&(u.push(L(_r(l),s)),l=[]),e&&u.push(e)},w=()=>{t.scopes.vFor>0&&l.push(R(z(`ref_for`,!0),z(`true`)))},T=({key:e,value:n})=>{if(Mi(e)){let a=e.content,o=E(a);if(o&&(!r||i)&&a.toLowerCase()!==`onclick`&&a!==`onUpdate:modelValue`&&!ee(a)&&(y=!0),o&&ee(a)&&(x=!0),o&&n.type===14&&(n=n.arguments[0]),n.type===20||(n.type===4||n.type===8)&&Cn(n,t)>0)return;a===`ref`?g=!0:a===`class`?_=!0:a===`style`?v=!0:a!==`key`&&!S.includes(a)&&S.push(a),r&&(a===`class`||a===`style`)&&!S.includes(a)&&S.push(a)}else b=!0};for(let i=0;ie.content===`prop`)&&(h|=32);let S=t.directiveTransforms[n];if(S){let{props:n,needRuntime:r}=S(c,e,t);!a&&n.forEach(T),x&&i&&!Mi(i)?C(L(n,s)):l.push(...n),r&&(d.push(c),de(r)&&ya.set(c,r))}else m(n)||(d.push(c),f&&(p=!0))}}let D;if(u.length?(C(),D=u.length>1?B(t.helper(Zr),u,s):u[0]):l.length&&(D=L(_r(l),s)),b?h|=16:(_&&!r&&(h|=2),v&&!r&&(h|=4),S.length&&(h|=8),y&&(h|=32)),!p&&(h===0||h===32)&&(g||x||d.length>0)&&(h|=512),!t.inSSR&&D)switch(D.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;tR(e,t)),i))}return Je(n,e.loc)}function br(e){let t=`[`;for(let n=0,r=e.length;n0){let{props:n,directives:a}=gr(e,t,i,!1,!1);r=n,a.length&&t.onError(H(36,a[0].loc))}return{slotName:n,slotProps:r}}function Cr(e=[]){return{props:e}}function wr(e,t){if(e.type===4)Tr(e,t);else for(let n=0;n=0&&(t=n.charAt(e),t===` `);e--);(!t||!ka.test(t))&&(o=!0)}}m===void 0?m=n.slice(0,p).trim():u!==0&&g();function g(){h.push(n.slice(u,p).trim()),u=p+1}if(h.length){for(p=0;p{y(),kr=Symbol(``),Ar=Symbol(``),jr=Symbol(``),Mr=Symbol(``),Nr=Symbol(``),Pr=Symbol(``),Fr=Symbol(``),Ir=Symbol(``),Lr=Symbol(``),Rr=Symbol(``),zr=Symbol(``),Br=Symbol(``),Vr=Symbol(``),Hr=Symbol(``),Ur=Symbol(``),Wr=Symbol(``),Gr=Symbol(``),Kr=Symbol(``),qr=Symbol(``),Jr=Symbol(``),Yr=Symbol(``),Xr=Symbol(``),Zr=Symbol(``),Qr=Symbol(``),$r=Symbol(``),ei=Symbol(``),ti=Symbol(``),ni=Symbol(``),ri=Symbol(``),ii=Symbol(``),ai=Symbol(``),oi=Symbol(``),si=Symbol(``),ci=Symbol(``),li=Symbol(``),ui=Symbol(``),di=Symbol(``),fi=Symbol(``),pi=Symbol(``),mi={[kr]:`Fragment`,[Ar]:`Teleport`,[jr]:`Suspense`,[Mr]:`KeepAlive`,[Nr]:`BaseTransition`,[Pr]:`openBlock`,[Fr]:`createBlock`,[Ir]:`createElementBlock`,[Lr]:`createVNode`,[Rr]:`createElementVNode`,[zr]:`createCommentVNode`,[Br]:`createTextVNode`,[Vr]:`createStaticVNode`,[Hr]:`resolveComponent`,[Ur]:`resolveDynamicComponent`,[Wr]:`resolveDirective`,[Gr]:`resolveFilter`,[Kr]:`withDirectives`,[qr]:`renderList`,[Jr]:`renderSlot`,[Yr]:`createSlots`,[Xr]:`toDisplayString`,[Zr]:`mergeProps`,[Qr]:`normalizeClass`,[$r]:`normalizeStyle`,[ei]:`normalizeProps`,[ti]:`guardReactiveProps`,[ni]:`toHandlers`,[ri]:`camelize`,[ii]:`capitalize`,[ai]:`toHandlerKey`,[oi]:`setBlockTracking`,[si]:`pushScopeId`,[ci]:`popScopeId`,[li]:`withCtx`,[ui]:`unref`,[di]:`isRef`,[fi]:`withMemo`,[pi]:`isMemoSame`},hi={HTML:0,0:`HTML`,SVG:1,1:`SVG`,MATH_ML:2,2:`MATH_ML`},gi={ROOT:0,0:`ROOT`,ELEMENT:1,1:`ELEMENT`,TEXT:2,2:`TEXT`,COMMENT:3,3:`COMMENT`,SIMPLE_EXPRESSION:4,4:`SIMPLE_EXPRESSION`,INTERPOLATION:5,5:`INTERPOLATION`,ATTRIBUTE:6,6:`ATTRIBUTE`,DIRECTIVE:7,7:`DIRECTIVE`,COMPOUND_EXPRESSION:8,8:`COMPOUND_EXPRESSION`,IF:9,9:`IF`,IF_BRANCH:10,10:`IF_BRANCH`,FOR:11,11:`FOR`,TEXT_CALL:12,12:`TEXT_CALL`,VNODE_CALL:13,13:`VNODE_CALL`,JS_CALL_EXPRESSION:14,14:`JS_CALL_EXPRESSION`,JS_OBJECT_EXPRESSION:15,15:`JS_OBJECT_EXPRESSION`,JS_PROPERTY:16,16:`JS_PROPERTY`,JS_ARRAY_EXPRESSION:17,17:`JS_ARRAY_EXPRESSION`,JS_FUNCTION_EXPRESSION:18,18:`JS_FUNCTION_EXPRESSION`,JS_CONDITIONAL_EXPRESSION:19,19:`JS_CONDITIONAL_EXPRESSION`,JS_CACHE_EXPRESSION:20,20:`JS_CACHE_EXPRESSION`,JS_BLOCK_STATEMENT:21,21:`JS_BLOCK_STATEMENT`,JS_TEMPLATE_LITERAL:22,22:`JS_TEMPLATE_LITERAL`,JS_IF_STATEMENT:23,23:`JS_IF_STATEMENT`,JS_ASSIGNMENT_EXPRESSION:24,24:`JS_ASSIGNMENT_EXPRESSION`,JS_SEQUENCE_EXPRESSION:25,25:`JS_SEQUENCE_EXPRESSION`,JS_RETURN_STATEMENT:26,26:`JS_RETURN_STATEMENT`},_i={ELEMENT:0,0:`ELEMENT`,COMPONENT:1,1:`COMPONENT`,SLOT:2,2:`SLOT`,TEMPLATE:3,3:`TEMPLATE`},vi={NOT_CONSTANT:0,0:`NOT_CONSTANT`,CAN_SKIP_PATCH:1,1:`CAN_SKIP_PATCH`,CAN_CACHE:2,2:`CAN_CACHE`,CAN_STRINGIFY:3,3:`CAN_STRINGIFY`},yi={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:``},bi=new Uint8Array([123,123]),xi=new Uint8Array([125,125]),Si={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])},Ci=class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer=``,this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=bi,this.delimiterClose=xi,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return this.mode===2&&this.stack.length===0}reset(){this.state=1,this.mode=0,this.buffer=``,this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=bi,this.delimiterClose=xi}getPos(e){let t=1,n=e+1,r=this.newlines.length,i=-1;if(r>100){let t=-1,n=r;for(;t+1>>1;this.newlines[r]=0;t--)if(e>this.newlines[t]){i=t;break}return i>=0&&(t=i+2,n=e-this.newlines[i]),{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){e===60?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):!this.inVPre&&e===this.delimiterOpen[0]&&(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){let e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){let t=this.sequenceIndex===this.currentSequence.length;if(!(t?ut(e):(e|32)===this.currentSequence[this.sequenceIndex]))this.inRCDATA=!1;else if(!t){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(e===62||lt(e)){let t=this.index-this.currentSequence.length;if(this.sectionStart=e||(this.state===28?this.currentSequence===Si.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):this.state===6||this.state===11||this.state===18||this.state===17||this.state===12||this.state===13||this.state===14||this.state===15||this.state===16||this.state===20||this.state===19||this.state===21||this.state===9||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}},wi={COMPILER_IS_ON_ELEMENT:`COMPILER_IS_ON_ELEMENT`,COMPILER_V_BIND_SYNC:`COMPILER_V_BIND_SYNC`,COMPILER_V_BIND_OBJECT_ORDER:`COMPILER_V_BIND_OBJECT_ORDER`,COMPILER_V_ON_NATIVE:`COMPILER_V_ON_NATIVE`,COMPILER_V_IF_V_FOR_PRECEDENCE:`COMPILER_V_IF_V_FOR_PRECEDENCE`,COMPILER_NATIVE_TEMPLATE:`COMPILER_NATIVE_TEMPLATE`,COMPILER_INLINE_TEMPLATE:`COMPILER_INLINE_TEMPLATE`,COMPILER_FILTERS:`COMPILER_FILTERS`},Ti={COMPILER_IS_ON_ELEMENT:{message:`Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`,link:`https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`},COMPILER_V_BIND_SYNC:{message:e=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${e}.sync\` should be changed to \`v-model:${e}\`.`,link:`https://v3-migration.vuejs.org/breaking-changes/v-model.html`},COMPILER_V_BIND_OBJECT_ORDER:{message:`v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`,link:`https://v3-migration.vuejs.org/breaking-changes/v-bind.html`},COMPILER_V_ON_NATIVE:{message:`.native modifier for v-on has been removed as is no longer necessary.`,link:`https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:`v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with