You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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,Y as s,at as c,b as l,d as te,ht as u,m as d,ot as f,q as p,rt as m,tn as h,x as g,y as _}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{l as v,r as y,s as b}from"./index-DPkd2m0V.js";import{t as x}from"./usePageLoad-DFTLo_Lv.js";import{c as S,p as C}from"./teachers-Bl3NKSTv.js";import{a as w}from"./dict-DoDYCi7z.js";import{n as T,o as E}from"./teacherStar-By0_CBs7.js";async function D(e){let{data:t}=await y.get(`/admin/v1/miniapp-users`,{params:e});return t.data}async function O(e){let{data:t}=await y.get(`/admin/v1/miniapp-users/${e}`);return t.data}async function k(e,t){let{data:n}=await y.post(`/admin/v1/miniapp-users/${e}/convert-to-teacher`,t);return n.data}var ne={class:`list-page students-page`},A={class:`list-filter-bar`},j={key:0,class:`status-badge status-published`},re={key:1,class:`status-badge status-unpublished`},ie={class:`table-row-actions`},M={class:`list-pager`},ae={key:0,class:`follow-teacher-summary`},oe={key:0},se={key:1},ce={key:2},le={class:`star-preview`},N=b(n({__name:`index`,setup(n){let y=u(!1),b=u([]),N=u({current_page:1,per_page:20,total:0}),P=u(1),F=u(``),I=u(``),L=u([]),R=u([]),z=u([]),B=u([]),V=u(!1),H=u(null),U=u(!1),W=u(null),G=u(!1),K=u({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:``}),q=_(()=>L.value.find(e=>e.value===`pending`)?.id);function J(e){return e?.length?e.join(``):``}async function Y(){let[e,t,n,r]=await Promise.all([w(`teacher_level`),w(`teacher_status`),S(),C({page:1,page_size:500})]);L.value=e.items,R.value=t.items,z.value=n.research_directions,B.value=r.items}async function X(){y.value=!0;try{let e={page:P.value,page_size:N.value.per_page};F.value&&(e.keyword=F.value),I.value!==``&&(e.converted=I.value);let t=await D(e);b.value=t.items,N.value=t.meta}finally{y.value=!1}}function ue(){F.value=``,I.value=``,P.value=1,X()}function Z(){P.value=1,X()}async function de(e){H.value=await O(e.id),V.value=!0}function Q(e){if(e.teacher_id){v.warning(`该学员已转入老师库`);return}W.value=e,K.value={name:e.name||``,university_id:void 0,city:``,title:e.job_title||``,research_direction_ids:[...e.research_direction_ids||[]],phone:e.mobile||``,email:``,star_level_dict_item_id:q.value,status_dict_item_id:R.value.find(e=>e.value===`active`)?.id,next_follow_date:``},U.value=!0}function fe(){let e=L.value.find(e=>e.id===K.value.star_level_dict_item_id);K.value.next_follow_date=E(e?.value)||``}function $(e){if(!e)return;let t=B.value.find(t=>t.id===e);t?.city&&!K.value.city&&(K.value.city=t.city)}m(()=>K.value.university_id,e=>$(e));async function pe(){if(!W.value)return;let e=K.value;if(!e.name.trim()){v.warning(`请填写姓名`);return}if(!e.university_id){v.warning(`请选择高校`);return}if(!e.city.trim()||!e.title.trim()){v.warning(`请填写城市与职称`);return}if(!e.research_direction_ids.length){v.warning(`请选择研究方向`);return}if(!e.status_dict_item_id){v.warning(`请选择状态`);return}G.value=!0;try{let t=await k(W.value.id,{name:e.name.trim(),university_id:e.university_id,city:e.city.trim(),title:e.title.trim(),research_direction_ids:e.research_direction_ids,phone:e.phone||null,email:e.email||null,star_level_dict_item_id:e.star_level_dict_item_id??null,status_dict_item_id:e.status_dict_item_id,next_follow_date:e.next_follow_date||null,recalc_next_follow_date:!0});v.success(`已转入老师库(老师 ID${t.teacher_id}`),U.value=!1,await X()}finally{G.value=!1}}return x(async()=>{await Y(),await X()}),(n,u)=>{let m=s(`el-input`),_=s(`el-option`),v=s(`el-select`),x=s(`el-button`),S=s(`el-table-column`),C=s(`el-table`),w=s(`el-pagination`),E=s(`el-card`),D=s(`el-descriptions-item`),O=s(`el-descriptions`),k=s(`el-dialog`),q=s(`el-form-item`),Y=s(`el-col`),$=s(`el-date-picker`),me=s(`el-row`),he=s(`el-form`),ge=ee(`loading`);return i(),e(`div`,ne,[u[30]||=l(`div`,{class:`page-header`},[l(`h1`,{class:`page-title`},`学员库`)],-1),r(E,{shadow:`never`,class:`admin-list-card`},{default:c(()=>[l(`div`,A,[r(m,{modelValue:F.value,"onUpdate:modelValue":u[0]||=e=>F.value=e,class:`filter-search`,placeholder:`搜索姓名、手机号、公司…`,clearable:``,onKeyup:te(Z,[`enter`])},null,8,[`modelValue`]),r(v,{modelValue:I.value,"onUpdate:modelValue":u[1]||=e=>I.value=e,placeholder:`转入状态`,clearable:``,class:`filter-select-wide`},{default:c(()=>[r(_,{label:`未转入老师库`,value:`0`}),r(_,{label:`已转入老师库`,value:`1`})]),_:1},8,[`modelValue`]),r(x,{type:`primary`,class:`btn-create`,onClick:Z},{default:c(()=>[...u[19]||=[o(`搜索`,-1)]]),_:1}),r(x,{onClick:ue},{default:c(()=>[...u[20]||=[o(`重置`,-1)]]),_:1})]),f((i(),g(C,{data:b.value,"row-key":`id`},{default:c(()=>[r(S,{prop:`name`,label:`姓名`,width:`100`}),r(S,{prop:`mobile`,label:`手机号`,width:`120`}),r(S,{prop:`company`,label:`公司`,"min-width":`140`,"show-overflow-tooltip":``}),r(S,{label:`研究方向`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(e.research_direction||``),1)]),_:1}),r(S,{label:`报名课程`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(J(e.course_titles)),1)]),_:1}),r(S,{label:`报名活动`,"min-width":`160`,"show-overflow-tooltip":``},{default:c(({row:e})=>[o(h(J(e.activity_titles)),1)]),_:1}),r(S,{label:`转入状态`,width:`110`,align:`center`},{default:c(({row:t})=>[t.teacher_id?(i(),e(`span`,j,`已转入`)):(i(),e(`span`,re,`未转入`))]),_:1}),r(S,{label:`操作`,width:`200`,fixed:`right`},{default:c(({row:e})=>[l(`div`,ie,[r(x,{size:`small`,class:`btn-action-secondary table-inline-btn`,onClick:t=>de(e)},{default:c(()=>[...u[21]||=[o(` 详情 `,-1)]]),_:1},8,[`onClick`]),e.teacher_id?(i(),g(x,{key:1,size:`small`,class:`btn-action-secondary table-inline-btn`,disabled:``},{default:c(()=>[...u[23]||=[o(` 已转入 `,-1)]]),_:1})):(i(),g(x,{key:0,size:`small`,class:`btn-action-brand table-inline-btn`,onClick:t=>Q(e)},{default:c(()=>[...u[22]||=[o(` 转入老师库 `,-1)]]),_:1},8,[`onClick`]))])]),_:1})]),_:1},8,[`data`])),[[ge,y.value]]),l(`div`,M,[r(w,{"current-page":P.value,"onUpdate:currentPage":u[2]||=e=>P.value=e,"page-size":N.value.per_page,total:N.value.total,layout:`total, prev, pager, next`,onCurrentChange:X},null,8,[`current-page`,`page-size`,`total`])])]),_:1}),r(k,{modelValue:V.value,"onUpdate:modelValue":u[5]||=e=>V.value=e,title:`学员详情`,width:`720px`,"destroy-on-close":``},{footer:c(()=>[r(x,{onClick:u[3]||=e=>V.value=!1},{default:c(()=>[...u[26]||=[o(`关闭`,-1)]]),_:1}),H.value&&!H.value.teacher_id?(i(),g(x,{key:0,type:`primary`,class:`btn-create`,onClick:u[4]||=e=>{V.value=!1,Q(H.value)}},{default:c(()=>[...u[27]||=[o(` 转入老师库 `,-1)]]),_:1})):a(``,!0)]),default:c(()=>[H.value?(i(),e(d,{key:0},[r(O,{column:2,border:``,size:`small`},{default:c(()=>[r(D,{label:`姓名`},{default:c(()=>[o(h(H.value.name),1)]),_:1}),r(D,{label:`手机号`},{default:c(()=>[o(h(H.value.mobile||``),1)]),_:1}),r(D,{label:`公司`,span:2},{default:c(()=>[o(h(H.value.company||``),1)]),_:1}),r(D,{label:`职务`},{default:c(()=>[o(h(H.value.job_title||``),1)]),_:1}),r(D,{label:`研究方向`},{default:c(()=>[o(h(H.value.research_direction||``),1)]),_:1}),r(D,{label:`微信昵称`},{default:c(()=>[o(h(H.value.nickname||``),1)]),_:1}),r(D,{label:`转入老师`},{default:c(()=>[o(h(H.value.teacher_name?`${H.value.teacher_name}ID ${H.value.teacher_id}`:`未转入`),1)]),_:1})]),_:1}),u[24]||=l(`h3`,{class:`sub-title`},`报名课程`,-1),r(C,{data:H.value.courses,size:`small`,"empty-text":`暂无报名`},{default:c(()=>[r(S,{prop:`title`,label:`课程`,"min-width":`180`}),r(S,{prop:`signed_up_at`,label:`报名时间`,width:`110`}),r(S,{prop:`company`,label:`报名时公司`,width:`140`,"show-overflow-tooltip":``})]),_:1},8,[`data`]),u[25]||=l(`h3`,{class:`sub-title`},`报名活动`,-1),r(C,{data:H.value.activities,size:`small`,"empty-text":`暂无报名`},{default:c(()=>[r(S,{prop:`title`,label:`活动`,"min-width":`180`}),r(S,{prop:`signed_up_at`,label:`报名时间`,width:`110`}),r(S,{prop:`company`,label:`报名时公司`,width:`140`,"show-overflow-tooltip":``})]),_:1},8,[`data`])],64)):a(``,!0)]),_:1},8,[`modelValue`]),r(k,{modelValue:U.value,"onUpdate:modelValue":u[17]||=e=>U.value=e,title:`转入老师库`,width:`960px`,"destroy-on-close":``,onClosed:u[18]||=e=>W.value=null},{footer:c(()=>[r(x,{onClick:u[16]||=e=>U.value=!1},{default:c(()=>[...u[28]||=[o(`取消`,-1)]]),_:1}),r(x,{type:`primary`,class:`btn-create`,loading:G.value,onClick:pe},{default:c(()=>[...u[29]||=[o(` 确认转入老师库 `,-1)]]),_:1},8,[`loading`])]),default:c(()=>[W.value?(i(),e(`div`,ae,[o(` 学员:`+h(W.value.name)+` `,1),W.value.mobile?(i(),e(`span`,oe,` · `+h(W.value.mobile),1)):a(``,!0),W.value.company?(i(),e(`span`,se,` · `+h(W.value.company),1)):a(``,!0),W.value.research_direction?(i(),e(`span`,ce,` · 研究方向:`+h(W.value.research_direction),1)):a(``,!0)])):a(``,!0),r(he,{"label-position":`top`,class:`form-small`,style:{"margin-top":`12px`}},{default:c(()=>[r(me,{gutter:12},{default:c(()=>[r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`姓名`,required:``},{default:c(()=>[r(m,{modelValue:K.value.name,"onUpdate:modelValue":u[6]||=e=>K.value.name=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`高校`,required:``},{default:c(()=>[r(v,{modelValue:K.value.university_id,"onUpdate:modelValue":u[7]||=e=>K.value.university_id=e,filterable:``,placeholder:`选择高校`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(B.value,e=>(i(),g(_,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`城市`,required:``},{default:c(()=>[r(m,{modelValue:K.value.city,"onUpdate:modelValue":u[8]||=e=>K.value.city=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`职称`,required:``},{default:c(()=>[r(m,{modelValue:K.value.title,"onUpdate:modelValue":u[9]||=e=>K.value.title=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:8},{default:c(()=>[r(q,{label:`研究方向`,required:``},{default:c(()=>[r(v,{modelValue:K.value.research_direction_ids,"onUpdate:modelValue":u[10]||=e=>K.value.research_direction_ids=e,multiple:``,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:`选择研究方向(可多选)`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(z.value,e=>(i(),g(_,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`电话`},{default:c(()=>[r(m,{modelValue:K.value.phone,"onUpdate:modelValue":u[11]||=e=>K.value.phone=e},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`邮箱`},{default:c(()=>[r(m,{modelValue:K.value.email,"onUpdate:modelValue":u[12]||=e=>K.value.email=e,type:`email`},null,8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:4},{default:c(()=>[r(q,{label:`星级`},{default:c(()=>[r(v,{modelValue:K.value.star_level_dict_item_id,"onUpdate:modelValue":u[13]||=e=>K.value.star_level_dict_item_id=e,style:{width:`100%`},onChange:fe},{default:c(()=>[(i(!0),e(d,null,p(L.value,e=>(i(),g(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),l(`span`,le,h(t(T)(L.value.find(e=>e.id===K.value.star_level_dict_item_id)?.value,L.value.find(e=>e.id===K.value.star_level_dict_item_id)?.label)),1)]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`状态`,required:``},{default:c(()=>[r(v,{modelValue:K.value.status_dict_item_id,"onUpdate:modelValue":u[14]||=e=>K.value.status_dict_item_id=e,placeholder:`请选择状态`,style:{width:`100%`}},{default:c(()=>[(i(!0),e(d,null,p(R.value,e=>(i(),g(_,{key:e.id,label:e.label,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),r(Y,{xs:24,md:6},{default:c(()=>[r(q,{label:`下次跟进日期`},{default:c(()=>[r($,{modelValue:K.value.next_follow_date,"onUpdate:modelValue":u[15]||=e=>K.value.next_follow_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])])}}}),[[`__scopeId`,`data-v-829c7ad1`]]);export{N as default};