Files
zyt/server/public/admin/assets/SendPanel-mpGya14f.js
T
2026-07-09 17:58:02 +08:00

2 lines
10 KiB
JavaScript

import{v as te,d as ae,i as ie,C as ne,r as se,V as oe,D as ue,B as re}from"./element-plus-Bolc0EfP.js";import{w as de,s as me}from"./@vue/runtime-dom-DDAG46FW.js";import{G as j,S as N,T as K,c as pe,P as fe,Q as ce}from"./@element-plus/icons-vue-B0jSCQ-G.js";import{r as y,i as _,_ as ve}from"./index-d3j0BX4t.js";import{u as G}from"./file-HzaZx3TF.js";import{f as ge,ak as v,I as w,F as I,ap as _e,G as T,a as l,aN as t,J as x,H as $,O as q,A as ye}from"./@vue/runtime-core-C6bnekPw.js";import{o as ke,Q as R}from"./@vue/shared-mAAVTE9n.js";import{y as V,n as b}from"./@vue/reactivity-DiY1c2vO.js";function Oe(r){return y.get({url:"/qywx.message/session_list",params:r})}function Pe(r){return y.get({url:"/qywx.message/archive_list",params:r})}function je(r){return y.post({url:"/qywx.message/mark_read",params:{session_id:r}})}function Ne(r){return y.post({url:"/qywx.message/send",params:r})}function Ke(r){return y.get({url:"/qywx.message/send_task_list",params:r})}function Ge(r,h=""){return y.get({url:"/qywx.message/send_task_detail",params:{task_id:r,cursor:h}})}function Qe(r=""){return y.get({url:"/qywx.message/staff_list",params:{keyword:r}})}function He(){return y.get({url:"/qywx.message/archive_status"})}function Je(r=5,h=!1){return y.post({url:"/qywx.message/pull_archive",params:{max_batches:r,download:h}})}async function Q(r,h){const S=new FormData;return S.append("file",r),S.append("type",h),y.post({url:"/qywx.message/upload_to_qywx",data:S,headers:{"Content-Type":"multipart/form-data"}})}const we={class:"send-panel"},xe={key:0,class:"attachment-list"},Ve=["src"],be={class:"attachment-filename"},he={class:"attachment-filename"},Ce={class:"attachment-filename"},qe={class:"send-toolbar"},Se={class:"toolbar-left"},Me={class:"toolbar-right"},Ue={class:"link-picurl-row"},Ee={key:0,class:"mini-preview"},Le=ge({__name:"SendPanel",props:{canSendMessage:{type:Boolean}},emits:["send"],setup(r,{emit:h}){const S=r,H=h,M=b(""),d=b([]),L=b(!1),f=b(null),z=b("image"),U=b(!1),c=b({title:"",url:"",picurl:"",desc:""}),E=b(!1),m=b({title:"",appid:"",page:"",pic_media_id:"",preview:""}),B=ye(()=>{if(!S.canSendMessage||L.value)return!1;const o=M.value.trim().length>0,e=d.value.some(s=>!s.uploading);return o||e});function F(o){if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}z.value=o;const e=o==="image"?"image/*":o==="video"?"video/*":"*/*";f.value&&(f.value.accept=e,f.value.value="",f.value.click())}function J(){z.value="link-cover",f.value&&(f.value.accept="image/*",f.value.value="",f.value.click())}function X(){z.value="mini-cover",f.value&&(f.value.accept="image/*",f.value.value="",f.value.click())}async function Y(o){var g;const s=(g=o.target.files)==null?void 0:g[0];if(!s)return;const i=z.value;if(i==="link-cover"){try{const u=await G(s,s.name);c.value.picurl=u.uri||u.url,_.msgSuccess("封面上传成功")}catch(u){_.msgError((u==null?void 0:u.message)||"封面上传失败")}return}if(i==="mini-cover"){try{const u=await Q(s,"image");m.value.pic_media_id=u.media_id;const k=await G(s,s.name);m.value.preview=k.uri||k.url,_.msgSuccess("小程序封面上传成功")}catch(u){_.msgError((u==null?void 0:u.message)||"封面上传失败")}return}const n=i==="file"?"":URL.createObjectURL(s),p={msgtype:i,uploading:!0,preview:n,file_name:s.name};d.value.push(p);const C=d.value.length-1;try{const k=(await Q(s,i)).media_id;i==="image"?p.image={media_id:k}:i==="video"?p.video={media_id:k}:p.file={media_id:k},p.uploading=!1}catch(u){_.msgError((u==null?void 0:u.message)||"上传失败"),d.value.splice(C,1)}}function Z(o){const e=d.value[o];e!=null&&e.preview&&e.preview.startsWith("blob:")&&URL.revokeObjectURL(e.preview),d.value.splice(o,1)}function ee(){const{title:o,url:e,picurl:s,desc:i}=c.value;if(!o.trim()||!e.trim()||!s.trim()){_.msgWarning("请完整填写标题、链接地址与封面图");return}if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}d.value.push({msgtype:"link",link:{title:o,url:e,picurl:s,desc:i}}),U.value=!1,c.value={title:"",url:"",picurl:"",desc:""}}function le(){const{title:o,appid:e,page:s,pic_media_id:i}=m.value;if(!o.trim()||!e.trim()||!s.trim()||!i){_.msgWarning("请完整填写小程序信息");return}if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}d.value.push({msgtype:"miniprogram",miniprogram:{title:o,appid:e,page:s,pic_media_id:i}}),E.value=!1,m.value={title:"",appid:"",page:"",pic_media_id:"",preview:""}}async function A(){if(!B.value)return;const o=d.value.filter(i=>!i.uploading).map(i=>{const n={msgtype:i.msgtype};return i.image&&(n.image=i.image),i.video&&(n.video=i.video),i.file&&(n.file=i.file),i.link&&(n.link=i.link),i.miniprogram&&(n.miniprogram=i.miniprogram),n}),e={},s=M.value.trim();s&&(e.text={content:s}),o.length&&(e.attachments=o),L.value=!0;try{await H("send",e),M.value="",d.value.forEach(i=>{var n;(n=i.preview)!=null&&n.startsWith("blob:")&&URL.revokeObjectURL(i.preview)}),d.value=[]}finally{L.value=!1}}return(o,e)=>{const s=te,i=ae,n=ie,p=ne,C=se,g=re,u=ue,k=oe;return v(),w("div",we,[d.value.length?(v(),w("div",xe,[(v(!0),w(I,null,_e(d.value,(a,D)=>{var W,O,P;return v(),w("div",{key:D,class:ke(["attachment-item","attachment-"+a.msgtype])},[a.msgtype==="image"?(v(),T(s,{key:0,src:a.preview||"",fit:"cover",class:"attachment-preview"},null,8,["src"])):a.msgtype==="video"?(v(),w("video",{key:1,src:a.preview||"",class:"attachment-preview",muted:""},null,8,Ve)):a.msgtype==="file"?(v(),w(I,{key:2},[l(i,{size:20},{default:t(()=>[l(V(j))]),_:1}),x("span",be,R(a.file_name),1)],64)):a.msgtype==="link"?(v(),w(I,{key:3},[l(i,{size:20},{default:t(()=>[l(V(N))]),_:1}),x("span",he,R(((W=a.link)==null?void 0:W.title)||((O=a.link)==null?void 0:O.url)),1)],64)):a.msgtype==="miniprogram"?(v(),w(I,{key:4},[l(i,{size:20},{default:t(()=>[l(V(K))]),_:1}),x("span",Ce,R((P=a.miniprogram)==null?void 0:P.title),1)],64)):$("",!0),a.uploading?(v(),T(n,{key:5,type:"primary",link:"",loading:"",size:"small"})):(v(),T(n,{key:6,class:"attachment-remove",type:"danger",link:"",onClick:Ie=>Z(D)},{default:t(()=>[l(i,null,{default:t(()=>[l(V(pe))]),_:1})]),_:1},8,["onClick"]))],2)}),128))])):$("",!0),l(p,{modelValue:M.value,"onUpdate:modelValue":e[0]||(e[0]=a=>M.value=a),type:"textarea",rows:3,placeholder:"在此输入消息,Ctrl+Enter 发送。该消息以代发员工身份发给客户,员工手机端确认后送达。",resize:"none",onKeydown:de(me(A,["ctrl"]),["enter"])},null,8,["modelValue","onKeydown"]),x("div",qe,[x("div",Se,[l(C,{content:"图片",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[1]||(e[1]=a=>F("image"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(fe))]),_:1})]),_:1})]),_:1}),l(C,{content:"视频",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[2]||(e[2]=a=>F("video"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(ce))]),_:1})]),_:1})]),_:1}),l(C,{content:"文件",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[3]||(e[3]=a=>F("file"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(j))]),_:1})]),_:1})]),_:1}),l(C,{content:"链接",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[4]||(e[4]=a=>U.value=!0)},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(N))]),_:1})]),_:1})]),_:1}),l(C,{content:"小程序",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[5]||(e[5]=a=>E.value=!0)},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(K))]),_:1})]),_:1})]),_:1})]),x("div",Me,[e[18]||(e[18]=x("span",{class:"send-hint"}," 员工手机端确认后送达客户 · Ctrl+Enter 快速发送 ",-1)),l(n,{type:"primary",disabled:!B.value,loading:L.value,onClick:A},{default:t(()=>[...e[17]||(e[17]=[q(" 发送 ",-1)])]),_:1},8,["disabled","loading"])])]),x("input",{ref_key:"fileInputRef",ref:f,type:"file",hidden:"",onChange:Y},null,544),l(k,{modelValue:U.value,"onUpdate:modelValue":e[11]||(e[11]=a=>U.value=a),title:"添加链接",width:"480px"},{footer:t(()=>[l(n,{onClick:e[10]||(e[10]=a=>U.value=!1)},{default:t(()=>[...e[20]||(e[20]=[q("取消",-1)])]),_:1}),l(n,{type:"primary",onClick:ee},{default:t(()=>[...e[21]||(e[21]=[q("确定",-1)])]),_:1})]),default:t(()=>[l(u,{"label-width":"80px",model:c.value},{default:t(()=>[l(g,{label:"标题"},{default:t(()=>[l(p,{modelValue:c.value.title,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.title=a),maxlength:"128"},null,8,["modelValue"])]),_:1}),l(g,{label:"链接地址"},{default:t(()=>[l(p,{modelValue:c.value.url,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.url=a),placeholder:"https://..."},null,8,["modelValue"])]),_:1}),l(g,{label:"封面图"},{default:t(()=>[x("div",Ue,[l(p,{modelValue:c.value.picurl,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.picurl=a),placeholder:"https://..."},null,8,["modelValue"]),l(n,{onClick:J},{default:t(()=>[...e[19]||(e[19]=[q("本地上传",-1)])]),_:1})])]),_:1}),l(g,{label:"描述"},{default:t(()=>[l(p,{modelValue:c.value.desc,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.desc=a),type:"textarea",rows:2,maxlength:"512"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(k,{modelValue:E.value,"onUpdate:modelValue":e[16]||(e[16]=a=>E.value=a),title:"添加小程序",width:"480px"},{footer:t(()=>[l(n,{onClick:e[15]||(e[15]=a=>E.value=!1)},{default:t(()=>[...e[22]||(e[22]=[q("取消",-1)])]),_:1}),l(n,{type:"primary",disabled:!m.value.pic_media_id||!m.value.appid,onClick:le},{default:t(()=>[...e[23]||(e[23]=[q(" 确定 ",-1)])]),_:1},8,["disabled"])]),default:t(()=>[l(u,{"label-width":"100px",model:m.value},{default:t(()=>[l(g,{label:"标题"},{default:t(()=>[l(p,{modelValue:m.value.title,"onUpdate:modelValue":e[12]||(e[12]=a=>m.value.title=a)},null,8,["modelValue"])]),_:1}),l(g,{label:"appid"},{default:t(()=>[l(p,{modelValue:m.value.appid,"onUpdate:modelValue":e[13]||(e[13]=a=>m.value.appid=a),placeholder:"wx..."},null,8,["modelValue"])]),_:1}),l(g,{label:"页面路径"},{default:t(()=>[l(p,{modelValue:m.value.page,"onUpdate:modelValue":e[14]||(e[14]=a=>m.value.page=a),placeholder:"/pages/index/index"},null,8,["modelValue"])]),_:1}),l(g,{label:"封面图"},{default:t(()=>[l(n,{onClick:X},{default:t(()=>[q(R(m.value.pic_media_id?"已选择 · 重新选择":"上传封面(必填)"),1)]),_:1}),m.value.preview?(v(),w("div",Ee,[l(s,{src:m.value.preview,fit:"cover"},null,8,["src"])])):$("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),ze=ve(Le,[["__scopeId","data-v-afee3bd0"]]),Xe=Object.freeze(Object.defineProperty({__proto__:null,default:ze},Symbol.toStringTag,{value:"Module"}));export{ze as S,He as a,Je as b,Qe as c,je as d,Pe as e,Ne as f,Ke as g,Ge as h,Xe as i,Oe as q};