|
|
|
|
|
import{C as e,D as t,Et as n,O as r,Q as i,R as a,S as o,W as s,Z as c,_t as l,b as u,ct as d,ht as f,in as p,k as m,m as h,q as g,st as _,w as v,x as y}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{_ as b,d as x,f as S,g as C,h as w,m as T,p as E,v as D}from"./index-CpTiFmNV.js";import{t as O}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{t as k}from"./browser-BFPWgi2T.js";import{n as A,r as j,t as M}from"./publicSourceChannels-DpNd5Xzi.js";var N=k(),P={class:`source-page`},F={class:`source-toolbar`},I={class:`toolbar-actions`},ee={class:`entry-url`},te={key:0,class:`qr-preview`},ne={class:`qr-label`},re={class:`qr-url`},L=O(m({__name:`PublicSourceChannelManageView`,setup(m){let O=l([]),k=l(!1),L=l(!1),R=l(!1),z=l(null),B=l(!1),V=l(null),H=l(null),U=f({source_code:``,source_name:``,status:`enabled`}),W=u(()=>z.value?`编辑公开来源渠道`:`新增公开来源渠道`);function G(){z.value=null,U.source_code=``,U.source_name=``,U.status=`enabled`}async function K(){k.value=!0;try{O.value=await A()}catch(e){S.error(e instanceof Error?e.message:`加载公开来源渠道失败`)}finally{k.value=!1}}function q(){G(),R.value=!0}function J(e){z.value=e.id,U.source_code=e.source_code,U.source_name=e.source_name,U.status=e.status,R.value=!0}function Y(){return/^[A-Za-z0-9_-]{2,64}$/.test(U.source_code.trim())?!U.source_name.trim()||U.source_name.trim().length>100?(S.warning(`渠道名称需为 1-100 个字符`),!1):!0:(S.warning(`渠道编码需为 2-64 位字母、数字、下划线或中划线`),!1)}async function X(){if(!Y())return;L.value=!0;let e={source_code:U.source_code.trim(),source_name:U.source_name.trim(),status:U.status};try{z.value?await j(z.value,e):await M(e),S.success(`公开来源渠道已保存`),R.value=!1,await K()}catch(e){S.error(e instanceof Error?e.message:`保存公开来源渠道失败`)}finally{L.value=!1}}async function ie(e){let t=e.status===`enabled`?`disabled`:`enabled`,n=t===`enabled`?`启用`:`停用`;try{await x.confirm(`确认${n}「${e.source_name}」?`,`${n}渠道`,{type:t===`enabled`?`info`:`warning`,confirmButtonText:n,cancelButtonText:`取消`}),await j(e.id,{status:t}),S.success(`渠道已${n}`),await K()}catch(e){e!==`cancel`&&e!==`close`&&S.error(e instanceof Error?e.message:`渠道${n}失败`)}}async function ae(e){try{await navigator.clipboard.writeText(e.entry_url),S.success(`访问地址已复制`)}catch{S.error(`复制失败,请手动复制访问地址`)}}async function Z(e,t,n=440){await(0,N.toCanvas)(t,e.entry_url,{width:n,margin:2,errorCorrectionLevel:`M`,color:{dark:`#111827`,light:`#ffffff`}})}async function oe(e){V.value=e,B.value=!0,await a(),H.value&&await Z(e,H.value,480)}function se(e,t,n,r){let i=r-32,a=22;e.textAlign=`center`,e.textBaseline=`middle`,e.fillStyle=`#111827`;do{if(e.font=`600 ${a}px sans-serif`,e.measureText(t).width<=i||a<=12)break;--a}while(a>12);e.fillText(t,r/2,n,i)}async function Q(e){let t=document.createElement(`canvas`);await Z(e,t,720);let n=document.createElement(`canvas`);n.width=720,n.height=864;let r=n.getContext(`2d`);if(!r){S.error(`当前浏览器无法生成二维码图片`);return}r.fillStyle=`#ffffff`,r.fillRect(0,0,n.width,n.height),r.drawImage(t,0,0),se(r,`${e.source_name}专属报名二维码`,790,n.width);let i=document.createElement(`a`);i.download=`${e.source_code}-qrcode.png`,i.href=n.toDataURL(`image/png`),i.click()}async function $(e){let t=document.createElement(`canvas`);await Z(e,t,720);let n=document.createElement(`a`);n.download=`${e.source_code}-qrcode-only.png`,n.href=t.toDataURL(`image/png`),n.click()}function ce(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}return s(()=>{K()}),(a,s)=>{let l=c(`el-button`),u=c(`el-table-column`),f=c(`el-tag`),m=c(`el-table`),x=c(`el-input`),S=c(`el-form-item`),A=c(`el-radio-button`),j=c(`el-radio-group`),M=c(`el-form`),N=c(`el-dialog`),z=i(`loading`);return g(),v(`section`,P,[y(`div`,F,[s[11]||=y(`div`,null,[y(`h1`,null,`公开来源渠道`),y(`p`,null,`用于生成首页入口链接和二维码,仅在新用户注册时写<EFBFBD>
|