3 lines
18 KiB
JavaScript
3 lines
18 KiB
JavaScript
import{_ as We}from"./BasicMainCard-4c879cc2.js";import{_ as Ge}from"./button.vue_vue_type_style_index_0_lang-b32e1136.js";import{d as Xe,v as Je,u as Qe,i as u,h as Ie,j as q,z as Ye,x as Ze,y as et,o as n,c as s,e as d,w as D,b as o,t as _,f as qe,F as h,q as C,n as f,l as p,k as ze,P as B,aG as $,H as x,B as tt,U as at,V as ot,s as Fe,A as nt}from"./index-90ac1a44.js";import{i as st}from"./index-dfdb843b.js";import{I as H}from"./Icon-85823aa3.js";import{m as lt,n as it,o as ct,p as rt,q as ut,r as dt,t as pt}from"./stepChallenge-46fd66a4.js";import{a as vt,g as _t}from"./convert-2ad76038.js";import{I as mt}from"./index-027c2128.js";import{T as Pe}from"./index-4d938e91.js";import{S as ht}from"./index-93d9312f.js";import{a as ft}from"./index-1e415282.js";import{P as gt,T as bt}from"./index-788f312f.js";import{_ as yt}from"./_plugin-vue_export-helper-8ee86600.js";import"./Grid-839ef6d1.js";import"./index-109c99be.js";import"./Col-fddaa6b7.js";import"./styleChecker-1445806f.js";import"./isPlainObject-aab367ce.js";import"./vnode-b0455438.js";import"./index-cfa536c5.js";import"./adminDb-60313cb0.js";import"./supabaseTableQuery-19bc7c1f.js";import"./SearchOutlined-0eaaa97a.js";import"./omit-84d71e15.js";import"./FormItemContext-64f846db.js";import"./index-c0eeee91.js";import"./shallowequal-36516cfd.js";import"./index-9869a66e.js";import"./isSymbol-9094e8b7.js";import"./useState-64f2823f.js";import"./useRefs-2a883b79.js";import"./_flatRest-f2577aae.js";import"./isMobile-e2e89480.js";import"./css-aae66f86.js";import"./DialogWrap-6616a498.js";import"./pickAttrs-ba13e92c.js";import"./index-90f5ddad.js";import"./index-a2503c07.js";import"./toArray-3936b2d5.js";import"./useMemo-9928f29b.js";const w=A=>(at("data-v-8ea3c235"),A=A(),ot(),A),kt={class:"feedback-page"},xt={class:"feedback-page__inner"},wt={class:"feedback-page__header"},St=w(()=>o("div",{class:"text-sm text-gray-500 mb-1"},"بازخوردهای چالش",-1)),Ct={class:"text-lg font-semibold m-0"},It={class:"feedback-layout"},qt={class:"feedback-menu"},zt=["onClick"],Ft={class:"feedback-menu__item-main"},Pt={key:0,class:"feedback-menu__steps"},Et=["onClick"],Tt={key:1,class:"feedback-menu__steps-note"},Ut={key:0,class:"feedback-menu__hint"},Bt={class:"feedback-content"},$t={key:0,class:"py-16 flex justify-center"},At={key:0,class:"text-center text-gray-500 py-12"},Mt={key:1,class:"step-feedback-active mb-4"},Rt=w(()=>o("span",{class:"step-feedback-active__label"},"بازخوردهای فعال این مرحله:",-1)),Lt={class:"step-feedback-active__chips"},jt={key:0,class:"text-xs text-gray-400"},Vt={key:2,class:"step-feedback-desc mb-4"},Nt={key:3,class:"text-center text-gray-500 py-12"},Ot={class:"space-y-4"},Dt={class:"flex flex-wrap items-center justify-between gap-3"},Ht=w(()=>o("h3",{class:"m-0 text-base font-semibold"},"پیشنهاد و انتقاد",-1)),Kt=w(()=>o("p",{class:"text-sm text-gray-500 m-0"}," پیامهایی که کاربران در پایان چالش نوشتهاند. ",-1)),Wt={class:"space-y-4"},Gt={class:"flex flex-wrap items-center justify-between gap-3"},Xt=w(()=>o("h3",{class:"m-0 text-base font-semibold"},"بازخورد متنی",-1)),Jt={class:"space-y-4"},Qt={class:"flex flex-wrap items-center justify-between gap-3"},Yt=w(()=>o("h3",{class:"m-0 text-base font-semibold"},"عکس",-1)),Zt={key:0,class:"text-center text-gray-500 py-12"},ea={class:"photo-grid"},ta={class:"photo-card__body"},aa=["title"],oa={class:"text-[11px] text-gray-500 mt-0.5 truncate",dir:"ltr"},na=["onClick"],sa={key:0,class:"photo-pagination"},la={class:"space-y-4"},ia={class:"flex flex-wrap items-center justify-between gap-3"},ca=w(()=>o("h3",{class:"m-0 text-base font-semibold"},"صوت ضبطشده",-1)),ra={key:0,class:"voice-player-row"},ua=["src"],da=["onClick"],pa={class:"space-y-4"},va={class:"flex flex-wrap items-center justify-between gap-3"},_a=w(()=>o("h3",{class:"m-0 text-base font-semibold"},"سوال چندگزینهای",-1)),ma={key:0,class:"text-center text-gray-500 py-12"},ha={class:"mcq-block__question"},fa={class:"font-semibold text-base"},ga={class:"text-xs text-gray-500 mt-1"},ba={class:"mcq-block__grid"},ya={class:"mcq-block__table"},ka={class:"mcq-block__chart"},xa={class:"mcq-legend"},wa={class:"truncate"},Sa={class:"shrink-0 text-gray-600"},Ca=Xe({__name:"index",setup(A){const z=mt.Search,Ee=gt,M=bt,Te=Pe,Ue=Pe.TabPane,Be=Je(),$e=Qe(),b=Number(Be.params.challengeId),re=u(""),K=u(!0),r=u("text"),m=u(""),I=u([]),W=u(""),G=u(""),X=u(""),J=u(""),Q=u(""),Y=u([]),R=u([]),g=u(1),F=u(12),L=u(0),Z=u([]),P=u([]),ue=u([]),v=Ie({text:!1,photo:!1,voice:!1,mcq:!1,completion:!1});function j(e=10){const a=Ie({current:1,pageSize:e,showSizeChanger:!0,pageSizeOptions:["10","20","50","100"],showTotal:i=>`${i} مورد`,onChange(i,c){a.current=i,a.pageSize=c},onShowSizeChange(i,c){a.current=1,a.pageSize=c}});return a}const de=j(10),pe=j(10),ve=j(10),ee=j(8);ee.pageSizeOptions=["8","16","32","50"];function _e(){de.current=1,pe.current=1,ve.current=1,ee.current=1}const te=new Map,V=new Map,E=q(()=>I.value.find(e=>String(e.id)===m.value)||null),y=q(()=>{const e=Number(m.value);return Number.isFinite(e)&&e>0?e:null}),me=[{key:"text",label:"بازخورد متنی",icon:"vuesax-linear:document-text"},{key:"photo",label:"عکس",icon:"vuesax-linear:gallery"},{key:"voice",label:"صوت ضبطشده",icon:"vuesax-linear:microphone-2"},{key:"mcq",label:"سوال چندگزینهای",icon:"vuesax-linear:task-square"},{key:"completion",label:"پیشنهاد و انتقاد",icon:"vuesax-linear:message-text"}];function T(e,a){return a==="completion"?!0:a==="text"?!!e.enable_feedback_text:a==="photo"?!!e.enable_photo_upload:a==="voice"?!!e.enable_voice_upload:a==="mcq"?!!e.enable_mcq:!1}const he=q(()=>me.map(e=>{if(e.key==="completion")return{...e,steps:[]};const a=I.value.filter(i=>T(i,e.key));return{...e,steps:a}}).filter(e=>e.key==="completion"||e.steps.length>0)),S=q(()=>r.value==="completion"?[]:I.value.filter(e=>T(e,r.value))),Ae=q(()=>{const e=E.value;return e?[{key:"text",label:"متنی",enabled:!!e.enable_feedback_text},{key:"photo",label:"عکس",enabled:!!e.enable_photo_upload},{key:"voice",label:"صوت",enabled:!!e.enable_voice_upload},{key:"mcq",label:"چندگزینهای",enabled:!!e.enable_mcq}]:[]}),fe=q(()=>Ae.value.filter(e=>e.enabled));function ae(e){if(e==="completion")return;const a=I.value.filter(c=>T(c,e));if(!a.length){m.value="";return}a.some(c=>String(c.id)===m.value)||(m.value=String(a[0].id))}function ge(){const e=E.value;if(!e||r.value==="completion"||T(e,r.value))return;const a=me.find(i=>i.key!=="completion"&&T(e,i.key));r.value=(a==null?void 0:a.key)||"completion"}function Me(e){ae(e),r.value=e}async function Re(e,a){const i=r.value!==e;m.value!==String(a)&&(g.value=1),m.value=String(a),r.value=e,i||await O(e)}const Le=[{title:"ردیف",dataIndex:"index",key:"index",width:70,align:"center"},{title:"نام کاربر",dataIndex:"user_name",key:"user_name"},{title:"شماره موبایل",dataIndex:"user_phone",key:"user_phone",width:140},{title:"متن بازخورد",dataIndex:"feedback_text",key:"feedback_text"}],je=[{title:"ردیف",dataIndex:"index",key:"index",width:70,align:"center"},{title:"نام کاربر",dataIndex:"user_name",key:"user_name"},{title:"شماره موبایل",dataIndex:"user_phone",key:"user_phone",width:140},{title:"پیشنهاد و انتقاد",dataIndex:"feedback_text",key:"feedback_text"}],Ve=[{title:"ردیف",dataIndex:"index",key:"index",width:70,align:"center"},{title:"نام کاربر",dataIndex:"user_name",key:"user_name"},{title:"شماره موبایل",dataIndex:"user_phone",key:"user_phone",width:140},{title:"صوت ضبطشده کاربر",key:"voice"}],Ne=[{title:"ردیف",dataIndex:"index",key:"index",width:60,align:"center"},{title:"نام کاربر",dataIndex:"user_name",key:"user_name"},{title:"شماره موبایل",dataIndex:"user_phone",key:"user_phone",width:120},{title:"پاسخ",dataIndex:"answer_label",key:"answer_label"}];function Oe(e,a){a instanceof HTMLElement?te.set(e,a):te.delete(e)}function N(e,a="image"){return e?a==="audio"?vt(e):_t(e):""}function be(){$e.push({name:"stepChallengesMain",query:{tab:"progress"}})}async function ye(e,a,i="image"){var c;try{const k=N(e,i);if(!k){x.error("آدرس فایل معتبر نیست");return}const t=await fetch(k);if(!t.ok)throw new Error("download failed");const l=await t.blob(),ce=((c=e.split(".").pop())==null?void 0:c.split("?")[0])||"bin",Ce=URL.createObjectURL(l),U=document.createElement("a");U.href=Ce,U.download=`${a}.${ce}`,document.body.appendChild(U),U.click(),U.remove(),URL.revokeObjectURL(Ce)}catch{window.open(N(e,i),"_blank")}}function ke(){V.forEach(e=>e.dispose()),V.clear()}function De(){ke();const e=["#2563EB","#16A34A","#F59E0B","#DC2626","#7C3AED","#0891B2","#DB2777"];for(const a of P.value){const i=te.get(a.step_id);if(!i)continue;const c=st(i);V.set(a.step_id,c);const k=(a.option_stats||[]).map((t,l)=>({name:t.label||`گزینه ${t.optionIndex+1}`,value:t.count,itemStyle:{color:e[l%e.length]}}));c.setOption({textStyle:{fontFamily:"iran-sans"},tooltip:{trigger:"item",textStyle:{fontFamily:"iran-sans"},formatter:t=>{const l=t.percent??0;return`${t.name}<br/>${t.value} نفر · ${l}%`}},legend:{orient:"horizontal",bottom:0,type:"scroll",textStyle:{fontFamily:"iran-sans"}},series:[{name:"آمار گزینهها",type:"pie",radius:"65%",center:["50%","45%"],avoidLabelOverlap:!0,itemStyle:{borderRadius:4,borderColor:"#fff",borderWidth:2},label:{show:!0,fontFamily:"iran-sans",formatter:`{b}
|
|
{c} نفر ({d}%)`},labelLine:{show:!0},emphasis:{label:{show:!0,fontSize:14,fontWeight:"bold",fontFamily:"iran-sans"},itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.15)"}},data:k.length?k:[{name:"بدون پاسخ",value:0,itemStyle:{color:"#E5E7EB"}}]}]})}}async function oe(){if(!y.value){Y.value=[];return}v.text=!0;try{Y.value=await lt(b,W.value,y.value)}catch(e){x.error(e.message||"خطا در بارگذاری بازخورد متنی")}finally{v.text=!1}}async function ne(){if(!y.value){R.value=[],L.value=0;return}v.photo=!0;try{const e=await pt(b,G.value,y.value,g.value,F.value);R.value=e.rows,L.value=e.total,g.value=e.page,F.value=e.pageSize}catch(e){x.error(e.message||"خطا در بارگذاری عکسها")}finally{v.photo=!1}}function xe(){g.value=1,ne()}function we(e,a){g.value=e,F.value=a,ne()}async function se(){if(!y.value){Z.value=[];return}v.voice=!0;try{Z.value=await it(b,X.value,y.value)}catch(e){x.error(e.message||"خطا در بارگذاری صوتها")}finally{v.voice=!1}}async function le(){if(!y.value){P.value=[];return}v.mcq=!0;try{P.value=await ct(b,J.value,y.value),await tt(),De()}catch(e){x.error(e.message||"خطا در بارگذاری سوالات چندگزینهای")}finally{v.mcq=!1}}async function ie(){v.completion=!0;try{ue.value=await rt(b,Q.value)}catch(e){x.error(e.message||"خطا در بارگذاری پیشنهاد و انتقاد")}finally{v.completion=!1}}async function O(e){e==="text"&&await oe(),e==="photo"&&await ne(),e==="voice"&&await se(),e==="mcq"&&await le(),e==="completion"&&await ie()}async function He(){g.value=1,_e(),ge(),await O(r.value)}async function Ke(){if(!b){x.error("شناسه چالش نامعتبر است"),be();return}K.value=!0;try{const[e,a]=await Promise.all([ut(b),dt(b)]);re.value=(e==null?void 0:e.title)||"",I.value=a;const i=a.find(c=>c.enable_feedback_text||c.enable_photo_upload||c.enable_voice_upload||c.enable_mcq);m.value=i?String(i.id):a.length?String(a[0].id):"",ge(),ae(r.value),await O(r.value)}catch(e){x.error(e.message||"خطا در بارگذاری صفحه")}finally{K.value=!1}}Ye(r,e=>{g.value=1,_e(),ae(e),O(e)});function Se(){V.forEach(e=>e.resize())}return Ze(()=>{Ke(),window.addEventListener("resize",Se)}),et(()=>{window.removeEventListener("resize",Se),ke()}),(e,a)=>{const i=Ge,c=We;return n(),s("div",kt,[d(c,null,{default:D(()=>{var k;return[o("div",xt,[o("div",wt,[o("div",null,[St,o("h2",Ct,_(re.value||"—"),1)]),d(i,{onClick:be},{default:D(()=>[d(H,{icon:"vuesax-linear:arrow-right",class:"ml-1"}),qe(" بازگشت به پیشرفت کاربران ")]),_:1})]),o("div",It,[o("aside",qt,[(n(!0),s(h,null,C(he.value,t=>(n(),s("button",{key:t.key,type:"button",class:Fe(["feedback-menu__item",{"feedback-menu__item--active":r.value===t.key}]),onClick:l=>Me(t.key)},[o("div",Ft,[d(H,{icon:t.icon,class:"text-lg shrink-0"},null,8,["icon"]),o("span",null,_(t.label),1)]),t.steps.length?(n(),s("div",Pt,[(n(!0),s(h,null,C(t.steps,l=>(n(),s("span",{key:l.id,class:Fe(["feedback-menu__step",{"feedback-menu__step--active":r.value===t.key&&m.value===String(l.id)}]),onClick:nt(ce=>Re(t.key,l.id),["stop"])},_(l.label),11,Et))),128))])):t.key==="completion"?(n(),s("div",Tt," پایان چالش ")):f("",!0)],10,zt))),128)),he.value.length?f("",!0):(n(),s("p",Ut," هیچ بازخورد فعالی برای این چالش تعریف نشده است. "))]),o("section",Bt,[K.value?(n(),s("div",$t,[d(p(ht),{size:"large"})])):(n(),s(h,{key:1},[I.value.length?(n(),s(h,{key:1},[r.value!=="completion"?(n(),s(h,{key:0},[S.value.length?(n(),ze(p(Te),{key:0,activeKey:m.value,"onUpdate:activeKey":a[0]||(a[0]=t=>m.value=t),class:"step-feedback-tabs",onChange:He},{default:D(()=>[(n(!0),s(h,null,C(S.value,t=>(n(),ze(p(Ue),{key:String(t.id),tab:t.label},null,8,["tab"]))),128))]),_:1},8,["activeKey"])):f("",!0),E.value?(n(),s("div",Mt,[Rt,o("div",Lt,[(n(!0),s(h,null,C(fe.value,t=>(n(),s("span",{key:t.key,class:"step-feedback-chip step-feedback-chip--on"},_(t.label),1))),128)),fe.value.length?f("",!0):(n(),s("span",jt," هیچ بازخوردی برای این مرحله فعال نیست "))])])):f("",!0),(k=E.value)!=null&&k.description?(n(),s("div",Vt,_(E.value.description),1)):f("",!0),S.value.length?f("",!0):(n(),s("div",Nt," هیچ مرحلهای این نوع بازخورد را فعال ندارد. "))],64)):f("",!0),B(o("div",Ot,[o("div",Dt,[Ht,d(p(z),{value:Q.value,"onUpdate:value":a[1]||(a[1]=t=>Q.value=t),placeholder:"جستجو بر اساس نام، موبایل یا متن","allow-clear":"",class:"max-w-sm",onSearch:ie,onPressEnter:ie},null,8,["value"])]),Kt,d(p(M),{columns:je,"data-source":ue.value,loading:v.completion,pagination:p(pe),"row-key":"id",bordered:"",size:"middle"},null,8,["data-source","loading","pagination"])],512),[[$,r.value==="completion"]]),B(o("div",Wt,[o("div",Gt,[Xt,d(p(z),{value:W.value,"onUpdate:value":a[2]||(a[2]=t=>W.value=t),placeholder:"جستجو بر اساس نام، موبایل یا متن","allow-clear":"",class:"max-w-sm",onSearch:oe,onPressEnter:oe},null,8,["value"])]),d(p(M),{columns:Le,"data-source":Y.value,loading:v.text,pagination:p(de),"row-key":"id",bordered:"",size:"middle"},null,8,["data-source","loading","pagination"])],512),[[$,r.value==="text"&&S.value.length]]),B(o("div",Jt,[o("div",Qt,[Yt,d(p(z),{value:G.value,"onUpdate:value":a[3]||(a[3]=t=>G.value=t),placeholder:"جستجو بر اساس نام یا شماره موبایل","allow-clear":"",class:"max-w-sm",onSearch:xe,onPressEnter:xe},null,8,["value"])]),!R.value.length&&!v.photo?(n(),s("div",Zt," عکسی برای این مرحله ثبت نشده است. ")):(n(),s(h,{key:1},[o("div",ea,[(n(!0),s(h,null,C(R.value,t=>(n(),s("div",{key:t.id,class:"photo-card"},[d(p(ft),{src:N(t.photo_url,"image"),preview:{mask:"پیشنمایش"},class:"photo-card__image"},null,8,["src"]),o("div",ta,[o("div",{class:"font-semibold text-xs truncate",title:t.user_name},_(t.user_name),9,aa),o("div",oa,_(t.user_phone||"—"),1),o("button",{type:"button",class:"photo-card__download",title:"دانلود",onClick:l=>ye(t.photo_url,`photo-${t.id}`,"image")},[d(H,{icon:"vuesax-linear:document-download"}),qe(" دانلود ")],8,na)])]))),128))]),L.value>0?(n(),s("div",sa,[d(p(Ee),{current:g.value,"onUpdate:current":a[4]||(a[4]=t=>g.value=t),"page-size":F.value,"onUpdate:pageSize":a[5]||(a[5]=t=>F.value=t),total:L.value,"show-size-changer":!0,"page-size-options":["12","24","36","48"],"show-total":t=>`${t} عکس`,onChange:we,onShowSizeChange:we},null,8,["current","page-size","total","show-total"])])):f("",!0)],64))],512),[[$,r.value==="photo"&&S.value.length]]),B(o("div",la,[o("div",ia,[ca,d(p(z),{value:X.value,"onUpdate:value":a[6]||(a[6]=t=>X.value=t),placeholder:"جستجو بر اساس نام یا شماره موبایل","allow-clear":"",class:"max-w-sm",onSearch:se,onPressEnter:se},null,8,["value"])]),d(p(M),{columns:Ve,"data-source":Z.value,loading:v.voice,pagination:p(ve),"row-key":"id",bordered:"",size:"middle"},{bodyCell:D(({column:t,record:l})=>[t.key==="voice"?(n(),s("div",ra,[o("audio",{src:N(l.voice_url,"audio"),controls:"",preload:"metadata",class:"voice-player"},null,8,ua),o("button",{type:"button",class:"voice-download-btn",title:"دانلود",onClick:ce=>ye(l.voice_url,`voice-${l.id}`,"audio")},[d(H,{icon:"vuesax-linear:document-download"})],8,da)])):f("",!0)]),_:1},8,["data-source","loading","pagination"])],512),[[$,r.value==="voice"&&S.value.length]]),B(o("div",pa,[o("div",va,[_a,d(p(z),{value:J.value,"onUpdate:value":a[7]||(a[7]=t=>J.value=t),placeholder:"جستجو بر اساس نام یا شماره موبایل","allow-clear":"",class:"max-w-sm",onSearch:le,onPressEnter:le},null,8,["value"])]),!P.value.length&&!v.mcq?(n(),s("div",ma," سوال چندگزینهای برای این مرحله تعریف نشده یا پاسخی ثبت نشده است. ")):f("",!0),(n(!0),s(h,null,C(P.value,t=>(n(),s("div",{key:t.step_id,class:"mcq-block"},[o("div",ha,[o("div",fa,_(t.question),1),o("div",ga,"تعداد پاسخها: "+_(t.total_answers),1)]),o("div",ba,[o("div",ya,[d(p(M),{columns:Ne,"data-source":t.answers,pagination:p(ee),"row-key":"id",bordered:"",size:"small"},null,8,["data-source","pagination"])]),o("div",ka,[o("div",{ref_for:!0,ref:l=>Oe(t.step_id,l),class:"mcq-chart"},null,512),o("div",xa,[(n(!0),s(h,null,C(t.option_stats,l=>(n(),s("div",{key:l.optionIndex,class:"mcq-legend__item"},[o("span",wa,_(l.label||`گزینه ${l.optionIndex+1}`),1),o("span",Sa,_(l.count)+" نفر · "+_(l.percent)+"٪",1)]))),128))])])])]))),128))],512),[[$,r.value==="mcq"&&S.value.length]])],64)):(n(),s("div",At," مرحلهای برای این چالش تعریف نشده است. "))],64))])])])]}),_:1})])}}});const vo=yt(Ca,[["__scopeId","data-v-8ea3c235"]]);export{vo as default};
|