|
|
import{I as e,N as t,V as n,Y as r,_ as i,d as a,f as o,i as s,it as c,kt as l,l as u,nt as d,p as f,u as p,ut as m,v as h,y as g,z as _}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{t as v}from"./message-Dh9377vh.js";import{n as y}from"./http-BWP--XXK.js";import{t as b}from"./datetime-DLy52ZIc.js";var x={class:`um-toolbar`},S={key:0},C={key:0,style:{"margin-top":`4px`,color:`var(--color-text-3)`,"font-size":`12px`}},w=1700,T=g({__name:`Blacklist`,setup(g){let T=c(!1),E=c([]),D=c([]),O=c(null),k=c(``),A=c(void 0),j=c([]),M=d({current:1,pageSize:10,total:0}),N=c(!1),P=c(`blacklist`),F=c(``),I=c([]),L=c([]),R=u(()=>O.value?.role===`venue_admin`);async function z(){let{data:e}=await y.get(`/me`);O.value=e}async function B(){T.value=!0;try{let[e,t]=await Promise.all([y.get(`/venues`),y.get(`/user-management/users`,{params:{keyword:k.value||void 0,venue_id:A.value||void 0,page:M.current,page_size:M.pageSize}})]);D.value=e.data,E.value=t.data.data,M.total=t.data.total}catch(e){v.error(e?.response?.data?.message??`加载用户管理失败`)}finally{T.value=!1}}function V(){M.current=1,B()}function H(e){let t=new Set(E.value.filter(e=>!e.disabled&&e.visitor_phone).map(e=>e.user_key));j.value=e.filter(e=>t.has(String(e)))}function U(e,t){P.value=t,F.value=``,I.value=[e.visitor_phone],R.value?L.value=(O.value?.venues||[]).map(e=>e.id):L.value=(t===`blacklist`?e.venues:e.blacklisted_venues).map(e=>e.id),N.value=!0}function W(e){if(!j.value.length){v.warning(`请先勾选用户`);return}if(P.value=e,F.value=``,I.value=E.value.filter(e=>j.value.includes(e.user_key)&&!!e.visitor_phone).map(e=>e.visitor_phone).filter(Boolean),!I.value.length){v.warning(`所选用户无可操作手机号`);return}R.value?L.value=(O.value?.venues||[]).map(e=>e.id):L.value=[],N.value=!0}function G(e,t){return(e.blacklisted_venues||[]).some(e=>e.id===t)}function K(e){return(e.blacklisted_venues||[]).map(e=>`${e.name}:${e.reason||`未填写`}`).join(`;`)}async function q(){if(!F.value.trim())return v.warning(`请填写原因`),!1;if(!L.value.length)return v.warning(`请至少选择一个场馆`),!1;try{let e=P.value===`blacklist`?`/user-management/blacklist`:`/user-management/unblacklist`,{data:t}=await y.post(e,{phones:I.value,venue_ids:L.value,reason:F.value.trim()});return v.success(`${t.message},成功 ${t.count} 条`),N.value=!1,j.value=[],await B(),!0}catch(e){return v.error(e?.response?.data?.message??`操作失败`),!1}}function J(e){M.current=e,B()}return t(async()=>{await z(),R.value&&(A.value=O.value?.venues?.[0]?.id),await B()}),(t,c)=>{let u=n(`a-input`),d=n(`a-option`),g=n(`a-select`),v=n(`a-button`),y=n(`a-space`),O=n(`a-table-column`),z=n(`a-tag`),Y=n(`a-table`),X=n(`a-card`),Z=n(`a-form-item`),Q=n(`a-textarea`),$=n(`a-form`),ee=n(`a-modal`);return e(),f(s,null,[h(X,{title:`活动管理 / 用户管理`},{default:r(()=>[p(`div`,x,[h(y,{wrap:``,size:12},{default:r(()=>[h(u,{modelValue:k.value,"onUpdate:modelValue":c[0]||=e=>k.value=e,placeholder:`姓名/手机号/身份证`,"allow-clear":``,style:{width:`220px`}},null,8,[`modelValue`]),h(g,{modelValue:A.value,"onUpdate:modelValue":c[1]||=e=>A.value=e,disabled:R.value,"allow-clear":``,style:{width:`220px`},placeholder:`筛选场馆`},{default:r(()=>[(e(!0),f(s,null,_(D.value,t=>(e(),a(d,{key:t.id,value:t.id},{default:r(()=>[i(l(t.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`disabled`]),h(v,{type:`primary`,onClick:V},{default:r(()=>[...c[7]||=[i(`查询`,-1)]]),_:1}),h(v,{onClick:B},{default:r(()=>[...c[8]||=[i(`刷新`,-1)]]),_:1}),h(v,{status:`warning`,onClick:c[2]||=e=>W(`blacklist`)},{default:r(()=>[...c[9]||=[i(`批量拉黑`,-1)]]),_:1}),h(v,{status:`success`,onClick:c[3]||=e=>W(`unblacklist`)},{default:r(()=>[...c[10]||=[i(`批量解除黑名单`,-1)]]),_:1})]),_:1})]),h(Y,{class:`list-data-table`,scroll:{x:w},data:E.value,loading:T.value,"row-key":`user_key`,"row-selection":{type:`checkbox`,selectedRowKeys:j.value,showCheckedAll:!0},pagination:{current:M.current,pageSize:M.pageSize,total:M.total,showTotal:!0},onSelectionChange:H,onPageChange:J},{columns:r(()=>[h(O,{title:`姓名`,"data-index":`visitor_name`,width:130,ellipsis:!0,tooltip:!0}),h(O,{title:`手机号`,"data-index":`visitor_phone`,width:150,ellipsis:!0,tooltip:!0}),h(O,{title:`身份证`,"data-index":`id_card`,width:200,ellipsis:!0,tooltip:!0}),h(O,{title:`OpenID`,"data-index":`openid`,width:220,ellipsis:!0,tooltip:!0}),h(O,{title:`预约场馆`,"min-width":240},{cell:r(({record:t})=>[h(y,{wrap:``},{default:r(()=>[(e(!0),f(s,null,_(t.venues,n=>(e(),a(z,{key:`book-${t.visitor_phone}-${n.id}`,color:G(t,n.id)?`red`:void 0},{default:r(()=>[i(l(n.name)+l(G(t,n.id)?`(已拉黑)`:``),1)]),_:2},1032,[`color`]))),128))]),_:2},1024)]),_:1}),h(O,{title:`黑名单场馆`,"min-width":240},{cell:r(({record:t})=>[h(y,{wrap:``},{default:r(()=>[(e(!0),f(s,null,_(t.blacklisted_venues,n=>(e(),a(z,{key:`black-${t.visitor_phone}-${n.id}`,color:`red`,title:n.reason?`原因:${n.reason}`:`原因:未填写`},{default:r(()=>[i(l(n.name),1)]),_:2},1032,[`title`]))),128)),t.blacklisted_venues?.length?o(``,!0):(e(),f(`span`,S,`-`))]),_:2},1024),t.blacklisted_venues?.length?(e(),f(`div`,C,l(K(t)),1)):o(``,!0)]),_:1}),h(O,{title:`预约次数`,"data-index":`reservation_count`,width:100}),h(O,{title:`最近预约时间`,width:180},{cell:r(({record:e})=>[i(l(m(b)(e.last_reserved_at)),1)]),_:1}),h(O,{title:`操作`,width:210,fixed:`right`,align:`center`},{cell:r(({record:e})=>[h(y,null,{default:r(()=>[h(v,{type:`text`,status:`warning`,disabled:!e.visitor_phone,onClick:t=>U(e,`blacklist`)},{default:r(()=>[...c[11]||=[i(` 拉黑 `,-1)]]),_:1},8,[`disabled`,`onClick`]),h(v,{type:`text`,status:`success`,disabled:!e.visitor_phone,onClick:t=>U(e,`unblacklist`)},{default:r(()=>[...c[12]||=[i(` 解除 `,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)]),_:1})]),_:1},8,[`scroll`,`data`,`loading`,`row-selection`,`pagination`])]),_:1}),h(ee,{visible:N.value,"onUpdate:visible":c[6]||=e=>N.value=e,title:P.value===`blacklist`?`拉黑用户`:`解除黑名单`,"on-before-ok":q},{default:r(()=>[h($,{layout:`vertical`,class:`admin-modal-form`},{default:r(()=>[h(Z,{label:`手机号`},{default:r(()=>[h(y,{wrap:``},{default:r(()=>[(e(!0),f(s,null,_(I.value,t=>(e(),a(z,{key:t},{default:r(()=>[i(l(t),1)]),_:2},1024))),128))]),_:1})]),_:1}),h(Z,{label:`场馆`,required:``},{default:r(()=>[h(g,{modelValue:L.value,"onUpdate:modelValue":c[4]||=e=>L.value=e,multiple:``,disabled:R.value,placeholder:`选择一个或多个场馆`},{default:r(()=>[(e(!0),f(s,null,_(D.value,t=>(e(),a(d,{key:t.id,value:t.id},{default:r(()=>[i(l(t.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`,`disabled`])]),_:1}),h(Z,{label:`原因`,required:``,class:`admin-modal-form__full`},{default:r(()=>[h(Q,{modelValue:F.value,"onUpdate:modelValue":c[5]||=e=>F.value=e,placeholder:`请输入原因`,"max-length":255,"show-word-limit":``},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1},8,[`visible`,`title`])],64)}}});export{T as default}; |