Files
machartaa_admin_dist/dist/assets/index-693655b4.js
T
2026-08-18 15:43:27 +03:30

2 lines
8.9 KiB
JavaScript

import{_ as M}from"./BasicMainCard-8da61c91.js";import{u as g,_ as j}from"./useBaseTable-a305524f.js";import{t as v,a as b}from"./useDataTime-0e280561.js";import{G as c,d as q,g as F,h as H,E as J,Q as G,D as Q,v as Y,o as L,c as $,b as p,w as m,a as I,t as z,k as X,H as h,j as x}from"./index-64bb19a3.js";import{fetchMatchingUserIds as C,applyEmbeddedUserSearch as E,applySupabaseSort as R,applySupabasePagination as T,formatTableResult as ee,applySupabaseFilter as P}from"./supabaseTableQuery-8ab5665d.js";import{_ as te,T as ae}from"./index-fe1cc383.js";import"./Grid-d205a4b4.js";import"./index-53278d29.js";import"./Col-4cc66d2b.js";import"./styleChecker-44a60ba7.js";import"./isPlainObject-908a4d4b.js";import"./vnode-a1a3bc0f.js";import"./_plugin-vue_export-helper-47756888.js";import"./button.vue_vue_type_style_index_0_lang-ae7cb173.js";import"./Icon-2a751d73.js";import"./index-7a73a23b.js";import"./updateLocale-34973999.js";import"./isSymbol-77db9868.js";import"./index-bc659f42.js";import"./shallowequal-a3fa20ee.js";import"./useState-45a66864.js";import"./useMemo-fddb4a7a.js";import"./FormItemContext-78515ae9.js";import"./omit-41b1cee4.js";import"./lodash-17ce3880.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-6148f843.js";import"./index-557a2985.js";import"./DialogWrap-c12b3672.js";import"./pickAttrs-ff8c51c6.js";import"./BasicModal.vue_vue_type_style_index_0_lang-dce46cd2.js";import"./index-d19de556.js";import"./index-6f7ee4ee.js";import"./SearchOutlined-5a638563.js";import"./index-b5f90115.js";import"./index-304c1b28.js";import"./Badge-6baddd17.js";import"./isNumeric-3f69e2aa.js";import"./index-2a5be533.js";import"./index-a5e6bc16.js";import"./index-4ee722bc.js";import"./index-95a0af99.js";import"./css-aae66f86.js";import"./index-ff7b0bbe.js";import"./toArray-156bc105.js";import"./isMobile-e2e89480.js";import"./index-d5b53aee.js";import"./useRefs-10844536.js";import"./_flatRest-6bd9fe69.js";const ie=[{title:"ردیف",dataIndex:"index",key:"index",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"رتبه",dataIndex:"rank",key:"rank",filterable:!1,width:80,align:"center"},{title:"نام کاربر",dataIndex:"display_name",key:"display_name",filterField:"display_name"},{title:"شماره همراه",dataIndex:"phone",key:"phone",filterField:"phone",width:130},{title:"امتیاز",dataIndex:"total_points",key:"total_points",filterField:"total_points",align:"center",width:100,customRender:e=>(e.record.total_points??0).toLocaleString("fa-IR")},{title:"آخرین بروزرسانی",dataIndex:"updated_at",key:"updated_at",type:"DateTime",filterField:"updated_at",width:150,customRender:e=>v(e.record.updated_at)}],ne=[{title:"ردیف",dataIndex:"index",key:"index",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"رتبه",dataIndex:"rank",key:"rank",filterable:!1,width:80,align:"center"},{title:"نام کاربر",dataIndex:"display_name",key:"display_name",filterField:"display_name"},{title:"شماره همراه",dataIndex:"phone",key:"phone",filterField:"phone",width:130},{title:"امتیاز هفته",dataIndex:"total_points",key:"total_points",filterField:"total_points",align:"center",width:110,customRender:e=>(e.record.total_points??0).toLocaleString("fa-IR")},{title:"آخرین بروزرسانی",dataIndex:"updated_at",key:"updated_at",type:"DateTime",filterField:"updated_at",width:150,customRender:e=>v(e.record.updated_at)}],oe=[{title:"ردیف",dataIndex:"index",key:"index",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"بازه هفته",dataIndex:"week_period",key:"week_period",filterField:"week_start",width:180,customRender:e=>{const a=e.record;return`${D(a.week_start)} تا ${D(a.week_end)}`}},{title:"رتبه",dataIndex:"rank",key:"rank",filterField:"rank",align:"center",width:80},{title:"نام کاربر",dataIndex:"display_name",key:"display_name",filterField:"display_name"},{title:"امتیاز",dataIndex:"total_points",key:"total_points",filterField:"total_points",align:"center",width:100,customRender:e=>(e.record.total_points??0).toLocaleString("fa-IR")},{title:"زمان آرشیو",dataIndex:"created_at",key:"created_at",type:"DateTime",filterField:"created_at",width:150,customRender:e=>v(e.record.created_at)}];function D(e){return e?b(`${e}T00:00:00Z`):"—"}function re(e){var i;if(!e)return"نامشخص";if((i=e.name)!=null&&i.trim())return e.name.trim();const a=`${e.first_name||""} ${e.last_name||""}`.trim();return a||e.phone||"نامشخص"}function le(e){return Array.isArray(e.users)?e.users[0]:e.users}function W(e,a){const i=le(e);return{user_id:e.user_id,total_points:e.total_points,updated_at:e.updated_at,week_start:e.week_start,rank:a,display_name:re(i),phone:(i==null?void 0:i.phone)||""}}async function A(){const{data:e,error:a}=await c.rpc("get_daily_question_weekly_leaderboard",{p_page:1,p_limit:1});if(a)throw a;return e==null?void 0:e.week_start}const se=new Set(["total_points","updated_at"]),de=new Set(["total_points","updated_at","week_start"]),pe=new Set(["week_start","week_end","rank","total_points","display_name","created_at"]);function U(e,a,i){var n;if(!((n=a.filters)!=null&&n.length))return e;for(const t of a.filters)t.hidden||!t.field||t.field==="display_name"||t.field==="phone"||i.has(t.field)&&(e=P(e,t));return e}function ce(e,a,i){var n;if(!((n=a.filters)!=null&&n.length))return e;for(const t of a.filters)if(!(t.hidden||!t.field)){if(t.field==="display_name"&&["eq","has","like"].includes(t.op)){e=e.ilike("display_name",`%${String(t.value).trim()}%`);continue}i.has(t.field)&&(e=P(e,t))}return e}function B(e,a,i,n,t={}){const o=i.page||1,r=i.limit||20,l=(o-1)*r,s=l;return{rows:(e||[]).map((k,u)=>({...n(k,l+u+1),index:s+u})),total:a??0,query:{...i,page:o,limit:r,total:a??0},...t}}async function _e(e){const{limit:a=20,page:i=1,search:n}=e;let t=c.from("daily_question_user_points").select("user_id, total_points, updated_at, users(name, first_name, last_name, phone)",{count:"exact"}).gt("total_points",0);if(n!=null&&n.trim()){const s=await C(c,n);t=E(t,n,[],s)}t=U(t,e,se),t=R(t,e,"-total_points",["total_points","updated_at"]),t=T(t,i,a);const{data:o,error:r,count:l}=await t;if(r)throw r;return B(o,l,e,W)}async function me(e){const a=await A(),{limit:i=20,page:n=1,search:t}=e;let o=c.from("daily_question_user_weekly_points").select("user_id, total_points, updated_at, week_start, users(name, first_name, last_name, phone)",{count:"exact"}).eq("week_start",a).gt("total_points",0);if(t!=null&&t.trim()){const _=await C(c,t);o=E(o,t,[],_)}o=U(o,e,de),o=R(o,e,"-total_points",["total_points","updated_at"]),o=T(o,n,i);const{data:r,error:l,count:s}=await o;if(l)throw l;return B(r,s,e,W,{week_start:a,week_end:N(a,6)})}async function ue(e){const{limit:a=20,page:i=1,search:n}=e;let t=c.from("daily_question_weekly_top10").select("*",{count:"exact"});n!=null&&n.trim()&&(t=t.ilike("display_name",`%${n.trim()}%`)),t=ce(t,e,pe),t=R(t,e,"-week_start",["week_start","rank","total_points","created_at"]),t=T(t,i,a);const{data:o,error:r,count:l}=await t;if(r)throw r;return ee(o,l,e,s=>({...s,week_period:`${s.week_start}..${s.week_end}`}))}async function fe(){const e=await A();return{week_start:e,week_end:N(e,6)}}function N(e,a){const i=new Date(`${e}T12:00:00Z`);return i.setUTCDate(i.getUTCDate()+a),i.toISOString().slice(0,10)}const ke={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4"},ye=I("h2",null,"جدول امتیازات سوال روز",-1),we={key:0,class:"text-sm text-gray-600 bg-gray-50 border rounded-lg px-3 py-2"},ge=I("p",{class:"text-sm text-gray-500 mb-3"}," ۱۰ نفر برتر هر هفته پس از پایان هفته در این بخش ذخیره می‌شوند. ",-1),ut=q({__name:"index",setup(e){const a=F("overall"),i=F(null),[n,t]=g(),[o,r]=g(),[l,s]=g(),_=H(()=>{if(!i.value)return"";const d=b(`${i.value.week_start}T00:00:00Z`),f=b(`${i.value.week_end}T00:00:00Z`);return`${d} تا ${f}`}),k={columns:ie,api:_e,defaultPageLimit:20},u={columns:ne,api:me,defaultPageLimit:20},O={columns:oe,api:ue,defaultPageLimit:20};J(a,async d=>{await G(),d==="overall"?t():d==="weekly"?(await S(),r()):d==="archive"&&s()});async function S(){try{i.value=await fe()}catch(d){Q.error((d==null?void 0:d.message)||"خطا در دریافت بازه هفته")}}return Y(S),(d,f)=>{const y=j,w=te,V=ae,K=M;return L(),$("div",null,[p(K,null,{default:m(()=>[I("div",ke,[ye,a.value==="weekly"&&_.value?(L(),$("div",we," هفته جاری: "+z(_.value),1)):X("",!0)]),p(V,{activeKey:a.value,"onUpdate:activeKey":f[0]||(f[0]=Z=>a.value=Z)},{default:m(()=>[p(w,{key:"overall",tab:"امتیازات کلی"},{default:m(()=>[p(y,h(k,{onRegister:x(n)}),null,16,["onRegister"])]),_:1}),p(w,{key:"weekly",tab:"امتیازات هفتگی"},{default:m(()=>[p(y,h(u,{onRegister:x(o)}),null,16,["onRegister"])]),_:1}),p(w,{key:"archive",tab:"بایگانی هفتگی"},{default:m(()=>[ge,p(y,h(O,{onRegister:x(l)}),null,16,["onRegister"])]),_:1})]),_:1},8,["activeKey"])]),_:1})])}}});export{ut as default};