3 lines
18 KiB
JavaScript
3 lines
18 KiB
JavaScript
import{_ as He}from"./BasicMainCard-4b9ba85b.js";import{_ as Xe}from"./button.vue_vue_type_style_index_0_lang-f6f5b6a0.js";import{d as Ge,q as Je,u as Qe,g as u,r as qe,h as I,E as Ye,v as Ze,P as et,o as n,c as s,b as d,w as D,a as o,t as _,e as Ie,F as h,n as C,k as f,j as p,i as ze,V as U,ay as $,D as x,O as tt,M as at,N as ot,p as Fe,B as nt}from"./index-f8ee37b9.js";import{i as st}from"./index-30e9b5a1.js";import{I as K}from"./Icon-889d6eab.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-bd1e9870.js";import{a as vt,g as _t}from"./convert-2ad76038.js";import{I as mt}from"./index-1ab617ae.js";import{a as Pe}from"./index-6e8a4b4f.js";import{S as ht}from"./index-0e72b27c.js";import{_ as ft}from"./index-2fc99ac3.js";import{P as gt,T as bt}from"./index-8bcedf66.js";import{_ as yt}from"./_plugin-vue_export-helper-775bc553.js";import"./Grid-30a17a21.js";import"./index-ee1b3469.js";import"./Col-97627e24.js";import"./styleChecker-c1fc9f39.js";import"./isPlainObject-6382de01.js";import"./vnode-b0e810ae.js";import"./supabaseTableQuery-95762ff3.js";import"./FormItemContext-5821e8c8.js";import"./omit-bdd3cea5.js";import"./index-b8cc71e2.js";import"./isSymbol-cdcd460d.js";import"./useState-f5985d90.js";import"./useRefs-bff35432.js";import"./_flatRest-6305d35d.js";import"./css-aae66f86.js";import"./DialogWrap-192ddaf7.js";import"./pickAttrs-69f29e9c.js";import"./index-0441c4fc.js";import"./index-f923b666.js";import"./toArray-53a55fc4.js";const w=M=>(at("data-v-8ea3c235"),M=M(),ot(),M),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"},qt={class:"feedback-layout"},It={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"},Bt={key:0,class:"feedback-menu__hint"},Ut={class:"feedback-content"},$t={key:0,class:"py-16 flex justify-center"},Mt={key:0,class:"text-center text-gray-500 py-12"},At={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"},Kt=w(()=>o("h3",{class:"m-0 text-base font-semibold"},"پیشنهاد و انتقاد",-1)),Wt=w(()=>o("p",{class:"text-sm text-gray-500 m-0"}," پیامهایی که کاربران در پایان چالش نوشتهاند. ",-1)),Ht={class:"space-y-4"},Xt={class:"flex flex-wrap items-center justify-between gap-3"},Gt=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=Ge({__name:"index",setup(M){const z=mt.Search,Ee=gt,A=bt,Te=Pe,Be=Pe.TabPane,Ue=Je(),$e=Qe(),b=Number(Ue.params.challengeId),re=u(""),W=u(!0),r=u("text"),m=u(""),q=u([]),H=u(""),X=u(""),G=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=qe({text:!1,photo:!1,voice:!1,mcq:!1,completion:!1});function j(e=10){const a=qe({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=I(()=>q.value.find(e=>String(e.id)===m.value)||null),y=I(()=>{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=I(()=>me.map(e=>{if(e.key==="completion")return{...e,steps:[]};const a=q.value.filter(i=>T(i,e.key));return{...e,steps:a}}).filter(e=>e.key==="completion"||e.steps.length>0)),S=I(()=>r.value==="completion"?[]:q.value.filter(e=>T(e,r.value))),Me=I(()=>{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=I(()=>Me.value.filter(e=>e.enabled));function ae(e){if(e==="completion")return;const a=q.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 Ae(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),B=document.createElement("a");B.href=Ce,B.download=`${a}.${ce}`,document.body.appendChild(B),B.click(),B.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,H.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,X.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,G.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 Ke(){g.value=1,_e(),ge(),await O(r.value)}async function We(){if(!b){x.error("شناسه چالش نامعتبر است"),be();return}W.value=!0;try{const[e,a]=await Promise.all([ut(b),dt(b)]);re.value=(e==null?void 0:e.title)||"",q.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{W.value=!1}}Ye(r,e=>{g.value=1,_e(),ae(e),O(e)});function Se(){V.forEach(e=>e.resize())}return Ze(()=>{We(),window.addEventListener("resize",Se)}),et(()=>{window.removeEventListener("resize",Se),ke()}),(e,a)=>{const i=Xe,c=He;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(K,{icon:"vuesax-linear:arrow-right",class:"ml-1"}),Ie(" بازگشت به پیشرفت کاربران ")]),_:1})]),o("div",qt,[o("aside",It,[(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=>Ae(t.key)},[o("div",Ft,[d(K,{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",Bt," هیچ بازخورد فعالی برای این چالش تعریف نشده است. "))]),o("section",Ut,[W.value?(n(),s("div",$t,[d(p(ht),{size:"large"})])):(n(),s(h,{key:1},[q.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:Ke},{default:D(()=>[(n(!0),s(h,null,C(S.value,t=>(n(),ze(p(Be),{key:String(t.id),tab:t.label},null,8,["tab"]))),128))]),_:1},8,["activeKey"])):f("",!0),E.value?(n(),s("div",At,[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),U(o("div",Ot,[o("div",Dt,[Kt,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"])]),Wt,d(p(A),{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"]]),U(o("div",Ht,[o("div",Xt,[Gt,d(p(z),{value:H.value,"onUpdate:value":a[2]||(a[2]=t=>H.value=t),placeholder:"جستجو بر اساس نام، موبایل یا متن","allow-clear":"",class:"max-w-sm",onSearch:oe,onPressEnter:oe},null,8,["value"])]),d(p(A),{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]]),U(o("div",Jt,[o("div",Qt,[Yt,d(p(z),{value:X.value,"onUpdate:value":a[3]||(a[3]=t=>X.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(K,{icon:"vuesax-linear:document-download"}),Ie(" دانلود ")],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]]),U(o("div",la,[o("div",ia,[ca,d(p(z),{value:G.value,"onUpdate:value":a[6]||(a[6]=t=>G.value=t),placeholder:"جستجو بر اساس نام یا شماره موبایل","allow-clear":"",class:"max-w-sm",onSearch:se,onPressEnter:se},null,8,["value"])]),d(p(A),{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(K,{icon:"vuesax-linear:document-download"})],8,da)])):f("",!0)]),_:1},8,["data-source","loading","pagination"])],512),[[$,r.value==="voice"&&S.value.length]]),U(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(A),{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",Mt," مرحلهای برای این چالش تعریف نشده است. "))],64))])])])]}),_:1})])}}});const so=yt(Ca,[["__scopeId","data-v-8ea3c235"]]);export{so as default};
|