2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{_ as we,r as c,c as ae,o as ke,A as F,b as r,d as t,i as q,f as xe,F as A,B as L,l as _,p as f,C as y,t as u,n as z,q as oe,D as De,z as d}from"./index-DGJ6dnLh.js";import{g as Ce,u as ne,a as $e,b as Se}from"./demands-DLGsQjh3.js";import Me from"./ErrorDialog-COuvC4wX.js";const Qe={class:"demand-hall"},Ve={class:"table-container"},Ue={class:"maps-table"},Re=["onClick"],Te={class:"id"},Ee={class:"requester"},Fe={key:0,class:"tag no-reward"},Ae={key:1},Le={class:"name"},ze={key:0,class:"tag no-reward"},Ne={key:1},Ie={class:"content"},Be={class:"reward"},He={class:"date"},je={class:"reply-count"},Oe=["onClick"],Ye={class:"modal-body"},We={class:"form-row"},Ge={class:"form-row"},Je={class:"form-row"},Ke={key:0,class:"error"},Pe=["disabled"],Xe={class:"modal-header"},Ze={style:{display:"flex","align-items":"center",gap:"16px"}},et={class:"modal-body"},tt={class:"detail-item"},st={key:0,class:"tag no-reward"},lt={key:1},at={class:"detail-item"},ot={key:0,class:"tag no-reward"},nt={key:1},rt={class:"detail-item"},dt={class:"value"},ut={class:"detail-item"},it={class:"detail-item"},ct={class:"value"},vt={class:"reply-section"},pt={class:"reply-list"},mt={key:0},ft={class:"reply-header"},yt={class:"reply-author"},bt={class:"reply-time"},qt={class:"reply-content"},_t={key:1,class:"no-reply"},gt={key:0},ht={class:"reply-with-avatar"},wt=["src"],kt={class:"reply-text"},xt={key:1},Dt={class:"modal-body"},Ct={class:"form-row"},$t={class:"form-row"},St={class:"form-row"},Mt={class:"form-row"},Qt={key:0,class:"error"},Vt=["disabled"],Ut={class:"modal-header"},Rt={class:"modal-body"},Tt={class:"form-row"},Et={class:"form-row"},Ft={class:"form-row"},At={class:"form-row"},Lt={key:4,class:"modal-overlay",style:{"z-index":"2000"}},zt={__name:"DemandList",setup(Nt){const N=c([]),I=c(!1),B=c(null),U=c(!1),H=c(null),x=c(!1),a=c(null),D=c(!1),v=c(""),n=c({requester:"",content:"",reward:"",qq_code:"",sendcontent:"",author:"",author_contact:"",replyTo:""}),b=c(!1),w=c(null),re=c([]),C=c(!1),p=c({requester:"",qq_code:"",content:"",reward:"",id:null}),k=c(!1),$=c(""),S=c(!1),M=c(null),Q=s=>!s||s==="无赏金",de=ae(()=>N.value.filter(s=>{var e;return!((e=s.content)!=null&&e.startsWith("&DEL"))})),j=s=>s.replies&&Array.isArray(s.replies)?s.replies.length:s.sendcontent&&typeof s.sendcontent=="string"&&s.sendcontent.trim()!==""?s.sendcontent.split("|").filter(e=>e.trim()!=="").length:0,R=s=>{if(!s||s==="Test_date")return"日期未提供";try{const e=new Date(s);if(isNaN(e.getTime()))return s;const o=i=>i.toString().padStart(2,"0");return`${e.getFullYear()}-${o(e.getMonth()+1)}-${o(e.getDate())} ${o(e.getHours())}:${o(e.getMinutes())}:${o(e.getSeconds())}`}catch{return s}},h=async()=>{I.value=!0,B.value=null;try{const s=await Ce();N.value=s,re.value=s.map(e=>({id:e.id,author:e.requester,content:e.content}))}catch(s){B.value=`加载失败: ${s.message}`,console.error("加载需求列表失败:",s)}finally{I.value=!1}},ue=s=>{H.value=s,x.value=!0,T()},O=()=>{x.value=!1,T()},T=()=>{const s=F();n.value={sendcontent:"",author:"",author_contact:s&&s.qq_code?s.qq_code:""},v.value="",w.value&&(w.value.style.height="auto")},ie=s=>{a.value=s,U.value=!0},V=()=>{U.value=!1,a.value=null},ce=()=>{const s=F();n.value={requester:"",content:"",reward:"",qq_code:s&&s.qq_code?s.qq_code:"",sendcontent:"",author:"",author_contact:""},v.value="",D.value=!0};function Y(){D.value=!1,v.value=""}async function ve(){var s,e,o;if(!((s=n.value.content)!=null&&s.trim())){v.value="需求内容不能为空";return}if(n.value.qq_code&&!/^\d+$/.test(n.value.qq_code)){v.value="QQ号必须为纯数字";return}b.value=!0,v.value="";try{const i=new Date,g=`${i.getFullYear()}-${(i.getMonth()+1).toString().padStart(2,"0")}-${i.getDate().toString().padStart(2,"0")} ${i.getHours().toString().padStart(2,"0")}:${i.getMinutes().toString().padStart(2,"0")}:${i.getSeconds().toString().padStart(2,"0")}`,m={requester:n.value.requester||"",sendcontent:"",content:n.value.content,reward:n.value.reward||"",date:g,qq_code:n.value.qq_code||""};console.log("提交的数据:",m),await Se(m),D.value=!1,h()}catch(i){console.error("提交失败:",i),v.value=((o=(e=i.response)==null?void 0:e.data)==null?void 0:o.detail)||"提交失败,请稍后重试"}finally{b.value=!1}}const pe=async()=>{var s,e,o,i,g;if(!((s=n.value.sendcontent)!=null&&s.trim())){v.value="回复内容不能为空";return}if(!((e=n.value.author)!=null&&e.trim())){v.value="昵称不能为空";return}if(!((o=n.value.author_contact)!=null&&o.trim())){v.value="QQ号不能为空";return}b.value=!0,v.value="";try{const m={reply:n.value.sendcontent};console.log("提交的回复数据:",m),await $e(H.value.id,m),x.value=!1,T(),h()}catch(m){console.error("提交回复失败:",m),v.value=((g=(i=m.response)==null?void 0:i.data)==null?void 0:g.detail)||"提交失败,请稍后重试"}finally{b.value=!1}};ke(()=>{h()});function W(){De(()=>{const s=w.value;s&&(s.style.height="auto",s.style.height=s.scrollHeight+"px")})}function me(s){const e=s.match(/^(\d+):(.+)$/);if(e)return e[1];const o=s.match(/[((]([1-9][0-9]{4,})[))]/);return o?o[1]:""}function G(s){const e=s.match(/^(\d+):(.+)$/);if(e)return{user:e[1],content:e[2].trim()};const o=s.match(/^(.+?[((][1-9][0-9]{4,}[))])(.*)$/);return o?{user:o[1].trim(),content:o[2].replace(/^:|^:/,"").trim()}:{user:"",content:s}}const fe=ae(()=>{const s=F();return s&&a.value&&s.qq_code&&a.value.qq_code&&String(s.qq_code)===String(a.value.qq_code)});async function ye(){var s,e,o;if(!((s=p.value.content)!=null&&s.trim())){$.value="需求内容不能为空",k.value=!0;return}try{await ne(p.value.id,{requester:p.value.requester,qq_code:p.value.qq_code,content:p.value.content,reward:p.value.reward,date:a.value.date,sendcontent:a.value.sendcontent}),C.value=!1,h(),V()}catch(i){$.value="修改失败: "+(((o=(e=i.response)==null?void 0:e.data)==null?void 0:o.detail)||i.message),k.value=!0}}function be(){a.value&&(M.value=a.value.id,S.value=!0)}async function qe(){var s,e;try{const o=`&DEL${a.value.content}`;await ne(M.value,{requester:a.value.requester,qq_code:a.value.qq_code,content:o,reward:a.value.reward,date:a.value.date,sendcontent:a.value.sendcontent}),h(),V()}catch(o){$.value="删除失败: "+(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.detail)||o.message),k.value=!0}finally{S.value=!1,M.value=null}}function _e(){S.value=!1,M.value=null}const ge=()=>{h()};return(s,e)=>{var o,i,g,m,J,K,P,X,Z,ee,te,se,le;return d(),r("div",Qe,[e[44]||(e[44]=t("div",{class:"page-header"},[t("h1",null,"需求列表"),t("h3",{class:"warning-tip"}," 免责声明:该功能仅做预约联系使用,不涉及现实中的货币、账户、一般等价物;请用户分辨明细,防止电信诈骗;如出现任何问题与该平台无关。 ")],-1)),t("button",{class:"btn-common btn-gradient btn-margin-right",onClick:ce},"添加需求"),t("button",{class:"btn-common btn-light",onClick:ge},"刷新"),t("div",Ve,[t("table",Ue,[e[18]||(e[18]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"请求者"),t("th",null,"QQ号"),t("th",null,"请求内容"),t("th",null,"悬赏金额"),t("th",null,"需求创建时间"),t("th",null,"回复数量"),t("th",null,"回复")])],-1)),t("tbody",null,[(d(!0),r(A,null,L(de.value,(l,E)=>(d(),r("tr",{key:l.id,class:"table-row",onClick:he=>ie(l)},[t("td",Te,u(E+1),1),t("td",Ee,[l.requester?(d(),r("span",Ae,u(l.requester),1)):(d(),r("span",Fe,"匿名"))]),t("td",Le,[l.qq_code?(d(),r("span",Ne,u(l.qq_code),1)):(d(),r("span",ze,"匿名"))]),t("td",Ie,u(l.content),1),t("td",Be,[t("span",{class:z(["tag",Q(l.reward)?"no-reward":"has-reward"])},u(Q(l.reward)?"无赏金":l.reward),3)]),t("td",He,u(R(l.date)),1),t("td",je,[t("span",{class:z(["tag",j(l)>0?"has-replies":"no-reward"])},u(j(l)),3)]),t("td",null,[t("button",{class:"btn-common btn-gradient btn-reply",onClick:_(he=>ue(l),["stop"])},"回复",8,Oe)])],8,Re))),128))])])]),x.value?(d(),r("div",{key:0,class:"modal-overlay",onClick:O},[t("div",{class:"modal-content",onClick:e[3]||(e[3]=_(()=>{},["stop"]))},[t("div",{class:"modal-header"},[e[19]||(e[19]=t("h2",null,"回复",-1)),t("button",{class:"close-btn",onClick:O},"×")]),t("div",Ye,[t("form",{class:"add-modal-form",onSubmit:_(pe,["prevent"])},[t("div",We,[e[20]||(e[20]=t("span",{class:"label"},"昵称:",-1)),f(t("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>n.value.author=l),class:"input",placeholder:"请输入您的昵称",required:""},null,512),[[y,n.value.author]])]),t("div",Ge,[e[21]||(e[21]=t("span",{class:"label"},"QQ号:",-1)),f(t("input",{"onUpdate:modelValue":e[1]||(e[1]=l=>n.value.author_contact=l),class:"input",placeholder:"请输入您的QQ号",type:"text",pattern:"[0-9]*",inputmode:"numeric",readonly:"",required:""},null,512),[[y,n.value.author_contact]])]),t("div",Je,[e[22]||(e[22]=t("span",{class:"label"},"内容:",-1)),f(t("textarea",{"onUpdate:modelValue":e[2]||(e[2]=l=>n.value.sendcontent=l),class:"input",placeholder:"请输入相关建议",rows:"3",ref_key:"autoTextarea",ref:w,onInput:W,required:""},null,544),[[y,n.value.sendcontent]])]),v.value?(d(),r("div",Ke,u(v.value),1)):q("",!0),t("button",{class:"btn-common btn-gradient submit-btn",disabled:b.value},u(b.value?"提交中...":"提交"),9,Pe)],32)])])])):q("",!0),U.value?(d(),r("div",{key:1,class:"modal-overlay",onClick:V},[t("div",{class:"modal-content",onClick:e[4]||(e[4]=_(()=>{},["stop"]))},[t("div",Xe,[e[23]||(e[23]=t("h2",null,"需求详情",-1)),t("div",Ze,[fe.value?(d(),r("button",{key:0,class:"delete-btn big-action-btn",onClick:be},"删除")):q("",!0),t("button",{class:"close-btn",onClick:V},"×")])]),t("div",et,[t("div",tt,[e[24]||(e[24]=t("span",{class:"label"},"QQ号:",-1)),(o=a.value)!=null&&o.qq_code?(d(),r("span",lt,u((i=a.value)==null?void 0:i.qq_code),1)):(d(),r("span",st,"匿名"))]),t("div",at,[e[25]||(e[25]=t("span",{class:"label"},"请求者:",-1)),(g=a.value)!=null&&g.requester?(d(),r("span",nt,u((m=a.value)==null?void 0:m.requester),1)):(d(),r("span",ot,"匿名"))]),t("div",rt,[e[26]||(e[26]=t("span",{class:"label"},"需求内容:",-1)),t("span",dt,u(((K=(J=a.value)==null?void 0:J.content)==null?void 0:K.replace(/^&DEL/,""))||((P=a.value)==null?void 0:P.content)),1)]),t("div",ut,[e[27]||(e[27]=t("span",{class:"label"},"赏金:",-1)),t("span",{class:z(["tag",Q((X=a.value)==null?void 0:X.reward)?"no-reward":"has-reward"])},u(Q((Z=a.value)==null?void 0:Z.reward)?"无赏金":(ee=a.value)==null?void 0:ee.reward),3)]),t("div",it,[e[28]||(e[28]=t("span",{class:"label"},"发布时间:",-1)),t("span",ct,u(R((te=a.value)==null?void 0:te.date)),1)]),t("div",vt,[e[29]||(e[29]=t("h3",null,"回复内容",-1)),t("div",pt,[(se=a.value)!=null&&se.replies&&a.value.replies.length>0?(d(),r("div",mt,[(d(!0),r(A,null,L(a.value.replies,l=>(d(),r("div",{key:l.id,class:"reply-item"},[t("div",ft,[t("span",yt,u(l.author||"匿名用户"),1),t("span",bt,u(R(l.time)),1)]),t("div",qt,u(l.content),1)]))),128))])):(d(),r("div",_t,[(le=a.value)!=null&&le.sendcontent?(d(),r("div",gt,[(d(!0),r(A,null,L(a.value.sendcontent.split("|"),(l,E)=>(d(),r("div",{key:E,class:"reply-content"},[t("div",ht,[t("img",{src:`https://q1.qlogo.cn/g?b=qq&nk=${me(l)}&s=40`,alt:"User Avatar",class:"reply-avatar"},null,8,wt),t("div",kt,[t("b",null,u(G(l).user),1),oe(" "+u(G(l).content),1)])])]))),128))])):(d(),r("div",xt," 暂无回复 "))]))])])])])])):q("",!0),D.value?(d(),r("div",{key:2,class:"modal-overlay",onClick:Y},[t("div",{class:"modal-content",onClick:e[9]||(e[9]=_(()=>{},["stop"]))},[t("div",{class:"modal-header"},[e[30]||(e[30]=t("h2",null,"添加需求",-1)),t("button",{class:"close-btn",onClick:Y},"×")]),e[35]||(e[35]=t("div",{class:"modal-body",style:{background:"linear-gradient(90deg,#fffbe6 0%,#fff1b8 100%)",color:"#ad8b00","font-weight":"bold","text-align":"center","border-radius":"8px",padding:"12px 10px",margin:"18px 0 18px 0","font-size":"16px","box-shadow":"0 2px 8px rgba(173,139,0,0.08)",display:"flex","align-items":"center",gap:"8px","justify-content":"center"}},[t("span",{style:{"font-size":"20px",color:"#faad14","margin-right":"8px"}},"⚠"),oe("需求一经发布不许修改 ")],-1)),t("div",Dt,[t("form",{class:"add-modal-form",onSubmit:_(ve,["prevent"])},[t("div",Ct,[e[31]||(e[31]=t("span",{class:"label"},"请求者:",-1)),f(t("input",{"onUpdate:modelValue":e[5]||(e[5]=l=>n.value.requester=l),class:"input",placeholder:"可选"},null,512),[[y,n.value.requester]])]),t("div",$t,[e[32]||(e[32]=t("span",{class:"label"},"QQ号:",-1)),f(t("input",{"onUpdate:modelValue":e[6]||(e[6]=l=>n.value.qq_code=l),class:"input",placeholder:"可选",type:"text",pattern:"[0-9]*",inputmode:"numeric",readonly:""},null,512),[[y,n.value.qq_code]])]),t("div",St,[e[33]||(e[33]=t("span",{class:"label"},"需求内容:",-1)),f(t("textarea",{"onUpdate:modelValue":e[7]||(e[7]=l=>n.value.content=l),class:"input",placeholder:"请输入需求内容",rows:"3",ref_key:"autoTextarea",ref:w,onInput:W},null,544),[[y,n.value.content]])]),t("div",Mt,[e[34]||(e[34]=t("span",{class:"label"},"赏金:",-1)),f(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>n.value.reward=l),class:"input",placeholder:"可选"},null,512),[[y,n.value.reward]])]),v.value?(d(),r("div",Qt,u(v.value),1)):q("",!0),t("button",{class:"btn-common btn-gradient submit-btn",disabled:b.value},u(b.value?"提交中...":"提交"),9,Vt)],32)])])])):q("",!0),C.value?(d(),r("div",{key:3,class:"modal-overlay",onClick:e[16]||(e[16]=l=>C.value=!1)},[t("div",{class:"modal-content",onClick:e[15]||(e[15]=_(()=>{},["stop"]))},[t("div",Ut,[e[36]||(e[36]=t("h2",null,"修改需求",-1)),t("button",{class:"close-btn",onClick:e[10]||(e[10]=l=>C.value=!1)},"×")]),t("div",Rt,[t("form",{class:"add-modal-form",onSubmit:_(ye,["prevent"])},[t("div",Tt,[e[37]||(e[37]=t("span",{class:"label"},"请求者:",-1)),f(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>p.value.requester=l),class:"input",required:""},null,512),[[y,p.value.requester]])]),t("div",Et,[e[38]||(e[38]=t("span",{class:"label"},"QQ号:",-1)),f(t("input",{"onUpdate:modelValue":e[12]||(e[12]=l=>p.value.qq_code=l),class:"input",required:"",readonly:""},null,512),[[y,p.value.qq_code]])]),t("div",Ft,[e[39]||(e[39]=t("span",{class:"label"},"需求内容:",-1)),f(t("textarea",{"onUpdate:modelValue":e[13]||(e[13]=l=>p.value.content=l),class:"input",rows:"3",required:""},null,512),[[y,p.value.content]])]),t("div",At,[e[40]||(e[40]=t("span",{class:"label"},"赏金:",-1)),f(t("input",{"onUpdate:modelValue":e[14]||(e[14]=l=>p.value.reward=l),class:"input"},null,512),[[y,p.value.reward]])]),e[41]||(e[41]=t("button",{class:"btn-common btn-gradient submit-btn",type:"submit"},"保存",-1))],32)])])])):q("",!0),S.value?(d(),r("div",Lt,[t("div",{class:"modal-content",style:{"max-width":"350px","text-align":"center"}},[e[42]||(e[42]=t("div",{class:"modal-header"},[t("h2",{style:{color:"#F56C6C"}},"隐藏并删除")],-1)),e[43]||(e[43]=t("div",{class:"modal-body",style:{"font-size":"16px"}},"确定要隐藏并删除该需求吗?此操作不可恢复。",-1)),t("div",{class:"delete-dialog-footer",style:{display:"flex","justify-content":"center",gap:"18px",margin:"18px 0 8px 0"}},[t("button",{class:"confirm-button",onClick:qe},"确认"),t("button",{class:"cancel-button",onClick:_e},"取消")])])])):q("",!0),xe(Me,{visible:k.value,message:$.value,onClose:e[17]||(e[17]=l=>k.value=!1)},null,8,["visible","message"])])}}},jt=we(zt,[["__scopeId","data-v-5775b1bb"]]);export{jt as default};
|