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