fix(icons): render FA glyphs in the SPA picker grid and harden item clicks
The server catalog ships bare glyph names, but the SPA grid preview composed "fas home" instead of "fas fa-home" — every FA icon rendered blank (the old curated lists carried the fa- prefix, so the regression appeared with the catalog switch). Item clicks move from per-element @click to a delegated panel handler reading data-icon (immunity to DOM-replacing extensions/userscripts, matching the PHP picker's pattern), and selecting now closes the popover so the choice is visible in the field immediately.
This commit is contained in:
1 parent
27d8a9ea71
commit
39bafb65c4
12 files changed
+33
-20
No files matched your search
@@ -0,0 +1,47 @@
|
||||
import{_ as I}from"./FaIcon.NZ6TDkNu.js";import{r as E,W as s,X as n,L as Z,Y as _,a2 as m,a5 as z,Z as k,ad as Ye,l as de,a4 as o,a3 as b,j as Ua,v as ja,z as Ea,a1 as T,f as A,c as H,w as me,F as j,R as K,o as we,b as ra,x as Ma,ac as Ra,I as Ka,ai as Ga,m as ea}from"./vendor-vue.BxZIRU0_.js";import{_ as te}from"./index.js";import{F as Na}from"./FaIconPicker.C_p6xA0k.js";import{ba as ce,bb as Ha,bc as Fa,bd as ue,be as Wa,bf as Ba,bg as Ja}from"./vendor-misc.bELTaXdf.js";import{a as fe}from"./shared-api.DnsQ5cxS.js";import{l as Qa}from"./level.E3ANSDAX.js";import{b as Xa}from"./badge.CKTsmH1z.js";const Za={class:"aksrt-field-group__header-left"},Ya={class:"aksrt-field-group__title"},et={key:0,class:"aksrt-field-group__desc"},at={class:"aksrt-field-group__header-right"},tt=["aria-expanded","title"],lt={class:"aksrt-field-group__body"},st={__name:"AksFieldGroup",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},collapsible:{type:Boolean,default:!1},defaultCollapsed:{type:Boolean,default:!1}},setup(e){const $=e,i=E(!!$.defaultCollapsed);function p(){$.collapsible&&(i.value=!i.value)}return(S,v)=>(s(),n("div",{class:Z(["aksrt-field-group",{"is-collapsible":e.collapsible,"is-collapsed":e.collapsible&&i.value}])},[e.title?(s(),n("div",{key:0,class:Z(["aksrt-field-group__header",{"is-clickable":e.collapsible}]),onClick:v[1]||(v[1]=D=>e.collapsible?p():void 0)},[_("div",Za,[e.icon?(s(),m(I,{key:0,icon:e.icon,size:16,class:"aksrt-field-group__icon"},null,8,["icon"])):z("",!0),_("div",null,[_("h3",Ya,k(e.title),1),e.description?(s(),n("p",et,k(e.description),1)):z("",!0)])]),_("div",at,[S.$slots.actions?(s(),n("div",{key:0,class:"aksrt-field-group__actions",onClick:v[0]||(v[0]=Ye(()=>{},["stop"]))},[de(S.$slots,"actions",{},void 0,!0)])):z("",!0),e.collapsible?(s(),n("button",{key:1,type:"button",class:"aksrt-field-group__collapse-btn","aria-expanded":(!i.value).toString(),title:i.value?"展开配置":"收起配置",onClick:Ye(p,["stop"])},[o(I,{icon:i.value?"fa fas fa-chevron-right":"fa fas fa-chevron-down",size:12},null,8,["icon"]),_("span",null,k(i.value?"展开":"收起"),1)],8,tt)):z("",!0)])],2)):z("",!0),o(Ea,{name:"aksrt-collapse"},{default:b(()=>[Ua(_("div",lt,[de(S.$slots,"default",{},void 0,!0)],512),[[ja,!i.value]])]),_:3})],2))}},it=te(st,[["__scopeId","data-v-6e29aa86"]]),nt={class:"aksrt-media-field"},ut={key:0,class:"aksrt-media-field__preview"},dt=["src","alt"],ot={key:1,class:"aksrt-media-field__file"},rt={class:"aksrt-media-field__filename"},_t={class:"aksrt-media-field__overlay"},pt={__name:"AksMediaField",props:{modelValue:{type:String,default:""},accept:{type:String,default:"image/*"},placeholder:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:$}){const i=e,p=$,S=H(()=>i.modelValue?/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(i.modelValue)||i.modelValue.startsWith("data:image/"):!1),v=H(()=>{if(!i.modelValue)return"";try{const O=new URL(i.modelValue,window.location.origin).pathname.split("/");return O[O.length-1]||i.modelValue}catch{const g=i.modelValue.split("/");return g[g.length-1]||i.modelValue}});function D(){if(typeof wp<"u"&&wp.media){const g=wp.media({title:i.placeholder,multiple:!1,library:{type:i.accept==="image/*"?"image":void 0}});g.on("select",()=>{const O=g.state().get("selection").first().toJSON();p("update:modelValue",O.url)}),g.open()}}function C(){p("update:modelValue","")}return(g,O)=>{const N=T("n-button"),W=T("n-input");return s(),n("div",nt,[e.modelValue?(s(),n("div",ut,[S.value?(s(),n("img",{key:0,src:e.modelValue,alt:e.placeholder,class:"aksrt-media-field__image"},null,8,dt)):(s(),n("div",ot,[o(I,{icon:"fa fas fa-file",size:24}),_("span",rt,k(v.value),1)])),_("div",_t,[o(N,{size:"tiny",quaternary:"",onClick:D},{default:b(()=>[o(I,{icon:"fa fas fa-exchange-alt"}),O[1]||(O[1]=A(" 更换 ",-1))]),_:1}),o(N,{size:"tiny",quaternary:"",type:"error",onClick:C},{default:b(()=>[o(I,{icon:"fa fas fa-trash-alt"}),O[2]||(O[2]=A(" 移除 ",-1))]),_:1})])])):(s(),n("div",{key:1,class:"aksrt-media-field__empty",onClick:D},[o(I,{icon:"fa fas fa-cloud-upload-alt",size:28}),_("span",null,k(e.placeholder),1)])),o(W,{value:e.modelValue,placeholder:"或直接输入 URL",size:"small",class:"aksrt-media-field__url","onUpdate:value":O[0]||(O[0]=R=>p("update:modelValue",R))},null,8,["value"])])}}},aa=te(pt,[["__scopeId","data-v-6a55ccc5"]]),yt={class:"aksrt-gallery-field"},ct={key:0,class:"aksrt-gallery-field__grid"},ft=["src","alt"],bt={key:1,class:"aksrt-gallery-field__placeholder"},mt={class:"aksrt-gallery-field__actions"},kt={key:1,class:"aksrt-gallery-field__empty"},ht={class:"aksrt-gallery-field__buttons"},vt={key:2,class:"aksrt-gallery-field__error"},gt={__name:"AksGalleryField",props:{modelValue:{type:Array,default:()=>[]},title:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:$}){const i=e,p=$,S=E({}),v=E("");let D=0;const C=H(()=>{const q=new Set;return i.modLine truncated
|
||||
en|English
|
||||
zh-TW|繁體中文
|
||||
ja|日本語
|
||||
ko|한국어
|
||||
fr|Français
|
||||
de|Deutsch
|
||||
es|Español
|
||||
ru|Русский`,i18n_nomenclature:"",i18n_url_strategy:"query"},groups:[{key:"basic",title:"基础配置",icon:"fa fas fa-globe",fields:[{key:"i18n_enabled",label:"启用多语言",type:"switch",default:!1,help:"开启后站点将支持多语言切换"},{key:"i18n_default_lang",label:"默认语言",type:"select",default:"zh-CN",options:[{label:"简体中文",value:"zh-CN"},{label:"English",value:"en"},{label:"繁體中文",value:"zh-TW"},{label:"日本語",value:"ja"},{label:"한국어",value:"ko"},{label:"Français",value:"fr"},{label:"Deutsch",value:"de"},{label:"Español",value:"es"},{label:"Русский",value:"ru"}],dependsOn:{key:"i18n_enabled",value:!0}},{key:"i18n_auto_detect",label:"自动检测浏览器语言",type:"switch",default:!0,dependsOn:{key:"i18n_enabled",value:!0},help:"基于浏览器 Accept-Language 自动切换(AKSRT 方案,区别于 legacy IP 定位方案)"}]},{key:"languages",title:"语言管理",icon:"fa fas fa-language",fields:[{key:"i18n_available_langs",label:"可用语言列表",type:"textarea",default:`zh-CN|简体中文
|
||||
en|English
|
||||
zh-TW|繁體中文
|
||||
ja|日本語
|
||||
ko|한국어
|
||||
fr|Français
|
||||
de|Deutsch
|
||||
es|Español
|
||||
ru|Русский`,dependsOn:{key:"i18n_enabled",value:!0},help:"每行一个语言:语言代码|显示名称(9 种内置语言)"},{key:"i18n_nomenclature",label:"自定义术语",type:"code",default:"",dependsOn:{key:"i18n_enabled",value:!0},help:"JSON 格式自定义翻译术语(key => 翻译),对齐 legacy nomenclature"}]},{key:"display",title:"展示设置",icon:"fa fas fa-eye",fields:[{key:"i18n_switcher_position",label:"语言切换器位置",type:"radio",default:"footer",options:[{label:"导航栏",value:"header"},{label:"页脚",value:"footer"},{label:"导航栏+页脚",value:"both"},{label:"隐藏",value:"none"}],dependsOn:{key:"i18n_enabled",value:!0}},{key:"i18n_url_strategy",label:"URL 策略",type:"radio",default:"query",options:[{label:"查询参数 (?lang=en)",value:"query"},{label:"路径前缀 (/en/page)",value:"path"},{label:"子域名 (en.site.com)",value:"subdomain"}],dependsOn:{key:"i18n_enabled",value:!0}}]}]},Nl={key:"global.custom-code",title:"自定义代码",icon:"fa fas fa-code",description:"自定义 CSS、JS 代码注入。",defaults:{custom_css:"",head_code:"",foot_code:"",trackcode:""},groups:[{key:"css",title:"自定义 CSS",icon:"fa fab fa-css3",fields:[{key:"custom_css",label:"自定义 CSS",type:"code",language:"css",placeholder:"/* 在此输入自定义 CSS */",rows:10,help:"将在页面 <head> 中加载"}]},{key:"code",title:"头部 & 底部代码",icon:"fa fas fa-code",fields:[{key:"head_code",label:"头部 HTML 代码",type:"code",placeholder:"<!-- 支持 meta/link/style/script 等任意 HTML -->",rows:6,help:"在 <head> 中输出,支持 meta/link/style/script 等任意 HTML"},{key:"foot_code",label:"底部 HTML 代码",type:"code",placeholder:"<!-- 在 </body> 前输出 -->",rows:6,help:"在页面底部 </body> 前输出,支持任意 HTML"}]},{key:"stats",title:"统计代码",icon:"fa fas fa-chart-bar",fields:[{key:"trackcode",label:"统计代码",type:"code",placeholder:"<!-- 百度统计 / GA / CNZZ / 51la -->",rows:6,help:"百度统计、Google Analytics、CNZZ、51la 等统计代码,自动在 head 中输出"}]}]},Hl={key:"global.seo",title:"SEO 优化",icon:"fa fas fa-search",description:"站点标题、描述、关键词与 AI SEO。AI 生成入口在文章「独立 SEO」框;连接配置在「扩展 → AI 连接配置」。优先使用 WordPress AI Connectors。",defaults:{seo_enabled:!0,seo_ai_enabled:!1,seo_connector:"-",seo_title:"",seo_keywords:"",seo_description:"",ai_seo_title_prompt:"",ai_seo_keywords_prompt:"",ai_seo_description_prompt:"",seo_baidu_push:!1,seo_baidu_normal:!1,seo_baidu_fast:!1,seo_baidu_token:"",seo_image_optimize:!0,seo_image_default:"",seo_image_always_default:!1,seo_auto_alt:!0,seo_go_link:!0,seo_go_link_nonce:!0,seo_go_link_post:!0,seo_go_link_exclude:"",seo_no_category:!1,seo_jsonld:!0,seo_jsonld_single:!0,seo_jsonld_page:!0},groups:[{key:"basic",title:"SEO 基础",icon:"fa fas fa-globe",fields:[{key:"seo_enabled",label:"启用核心 SEO 优化",type:"switch",default:!0,help:"关闭后主题不再输出 SEO title/description/keywords 等 head 标签。"},{key:"seo_ai_enabled",label:"启用 AI SEO 生成",type:"switch",default:!1,help:"开启后文章/分类「独立 SEO」框显示「AI 生成 SEO」按钮。需先配置 AI 连接(WP Connectors 或扩展 → AI 连接配置)。",dependsOn:{key:"seo_enabled",value:!0}},{key:"seo_connector",label:"标题连接符",type:"input",default:"-",placeholder:"例如:- 或 |",help:"AI 生成标题时会用此连接符追加站点名。"},{key:"seo_title",label:"站点 SEO 标题",type:"textarea",rows:2,default:""},{key:"seo_keywords",label:"站点 SEO 关键词",type:"textarea",rows:3,default:""},{key:"seo_description",label:"站点 SEO 描述",type:"textarea",rows:4,default:""}]},{key:"ai-seo",title:"AI SEO 提示词",icon:"fa fab fa-android",description:"留空则使用内置 原主题风格默认提示词。填写后作为 system instruction 覆盖默认。",fields:[{key:"ai_seo_title_prompt",label:"标题提示词",type:"textarea",rows:5,default:"",dependsOn:{key:"seo_ai_enabled",value:!0},placeholder:"你是一名资深的网站 SEO 编辑……直接输出标题文本本身,不要任何前缀、引号或解释。",help:"控制 AI 如何生成 SEO 标题。留空使用主题内置默认。"},{key:"ai_seo_keywords_prompt",label:"关键词提示词",type:"textarea",rows:5,default:"",dependsOn:{key:"seo_ai_enabled",value:!0},placeholder:"你是一名资深 SEO 编辑……使用英文逗号分隔,直接输出关键词列表。",help:"控制 AI 如何生成 meta keywords。留空使用主题内置默认。"},{key:"ai_seo_description_prompt",label:"描述提示词",type:"textarea",rows:5,default:"",dependsOn:{key:"seo_ai_enabled",value:!0},placeholder:"你是一名资深的中文 SEO 编辑……字数控制在 80 至 150 个汉字之间。",help:"控制 AI 如何生成 meta description。留空使用主题内置默认。"}]},{key:"baidu",title:"百度推送",ic
Line truncated
|
||||
详情请联系管理员`,user_verify_desc:"认证用户会在昵称后显示认证徽章,同时享受多种优先待遇。申请请确保信息属实。"},groups:[{key:"display",title:"公开展示",icon:"fa fas fa-eye",fields:[{key:"user_verify_enabled",label:"启用身份认证",type:"switch",default:!0},{key:"user_verify_public_display",label:"公开页显示认证徽标",type:"switch",default:!0,dependsOn:{key:"user_verify_enabled",value:!0}},{key:"user_verify_personal_badge_text",label:"个人认证徽标文案",type:"input",default:"个人认证",dependsOn:{key:"user_verify_public_display",value:!0}},{key:"user_verify_enterprise_badge_text",label:"企业认证徽标文案",type:"input",default:"企业认证",dependsOn:{key:"user_verify_public_display",value:!0}}]},{key:"workflow",title:"认证方式",icon:"fa fas fa-tasks",fields:[{type:"alert",content:"认证方式固定为个人认证和企业认证,申请人不可自行新增或修改类型。"}]},{key:"apply",title:"申请设置",icon:"fa fas fa-edit",fields:[{key:"user_verify_allow_apply",label:"允许用户前台申请",type:"switch",default:!0,dependsOn:{key:"user_verify_enabled",value:!0}},{key:"user_verify_disable_desc",label:"停用申请说明",type:"textarea",default:`由于系统正在维护,暂时无法申请身份认证
|
||||
详情请联系管理员`,dependsOn:{key:"user_verify_allow_apply",value:!1}},{key:"user_verify_personal_fee",label:"个人认证每次扣余额(元)",type:"input",default:"0.00",help:"仅接受最多两位小数的十进制字符串。",dependsOn:{key:"user_verify_allow_apply",value:!0}},{key:"user_verify_personal_free_applications",label:"个人认证赠送初始次数",type:"number",default:0,min:0,max:9999,help:"每位用户前 N 次个人认证申请免费,之后按单次费用扣余额。",dependsOn:{key:"user_verify_allow_apply",value:!0}},{key:"user_verify_personal_require_real_name",label:"个人认证强制填写真实姓名",type:"switch",default:!1,dependsOn:{key:"user_verify_allow_apply",value:!0}},{key:"user_verify_enterprise_fee",label:"企业认证每次扣余额(元)",type:"input",default:"0.00",help:"仅接受最多两位小数的十进制字符串。",dependsOn:{key:"user_verify_allow_apply",value:!0}},{key:"user_verify_enterprise_free_applications",label:"企业认证赠送初始次数",type:"number",default:0,min:0,max:9999,help:"每位用户前 N 次企业认证申请免费,之后按单次费用扣余额。",dependsOn:{key:"user_verify_allow_apply",value:!0}},{key:"user_verify_enterprise_require_real_name",label:"企业认证强制填写真实姓名",type:"switch",default:!1,dependsOn:{key:"user_verify_allow_apply",value:!0}},{key:"user_verify_desc",label:"申请介绍",type:"textarea",default:"认证用户会在昵称后显示认证徽章,同时享受多种优先待遇。申请请确保信息属实。",dependsOn:{key:"user_verify_allow_apply",value:!0}}]}]},ys={key:"users.wechat",title:"微信通知",icon:"fa fab fa-weixin",description:"配置微信模板消息、订阅/解绑和站外通知策略。",defaults:{wechat_notify_enabled:!1,wechat_app_id:"",wechat_app_secret:"",wechat_template_id:"",wechat_token:"",wechat_encoding_aes_key:"",wechat_notify_comment:!0,wechat_notify_reply:!0,wechat_notify_system:!0,wechat_bind_entry:!0},groups:[{key:"account",title:"公众号配置",icon:"fa fab fa-weixin",fields:[{key:"wechat_notify_enabled",label:"启用微信通知",type:"switch",default:!1,help:"开启后用户可绑定微信接收通知"},{key:"wechat_app_id",label:"AppID",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_app_secret",label:"AppSecret",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_template_id",label:"模板消息 ID",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0},help:"在微信公众平台申请的模板消息 ID"}]},{key:"verify",title:"服务器验证",icon:"fa fas fa-check-circle",fields:[{key:"wechat_token",label:"Token",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0},help:"微信公众平台服务器配置中的 Token"},{key:"wechat_encoding_aes_key",label:"EncodingAESKey",type:"input",default:"",dependsOn:{key:"wechat_notify_enabled",value:!0}}]},{key:"triggers",title:"通知触发器",icon:"fa fas fa-bell",fields:[{key:"wechat_notify_comment",label:"新评论通知",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_notify_reply",label:"评论回复通知",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_notify_system",label:"系统通知",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0}},{key:"wechat_bind_entry",label:"显示绑定入口",type:"switch",default:!0,dependsOn:{key:"wechat_notify_enabled",value:!0},help:"在用户中心显示微信绑定/解绑按钮"}]}]},cs={key:"users.report",title:"禁封/举报",icon:"fa fas fa-flag",description:"配置举报入口、公开限制提示和后续治理分类,为封禁/举报流程预留稳定结构。",defaults:{user_report_enabled:!1,user_report_public_entry:!0,user_report_public_notice:!0,user_report_ban_notice_text:"当前账号处于限制状态,部分互动能力已关闭。",user_report_categories:`spam|垃圾信息
|
||||
abuse|人身攻击
|
||||
copyright|版权投诉`,ban_preset_reason:`spam|垃圾信息
|
||||
abuse|人身攻击
|
||||
violation|违规操作`,ban_appeal_desc:"",ban_appeal_keys:"",user_report_img_s:!0,user_report_desc:""},groups:[{key:"entry",title:"前台入口",icon:"fa fas fa-sign-in-alt",fields:[{key:"user_report_enabled",label:"启用举报/禁封结构",type:"switch",default:!1},{key:"user_report_public_entry",label:"公开主页展示举报入口",type:"switch",default:!0,dependsOn:{key:"user_report_enabled",value:!0}},{key:"user_report_public_notice",label:"公开显示限制提示",type:"switch",default:!0,dependsOn:{key:"user_report_enabled",value:!0}},{key:"user_report_ban_notice_text",label:"限制提示文案",type:"input",default:"当前账号处于限制状态,部分互动能力已关闭。",dependsOn:{key:"user_report_public_notice",value:!0}}]},{key:"taxonomy",title:"举报分类",icon:"fa fas fa-list",fields:[{key:"user_report_categories",label:"举报分类",type:"textarea",default:`spam|垃圾信息
|
||||
abuse|人身攻击
|
||||
copyright|版权投诉`,help:"每行一个分类:slug|显示名称",dependsOn:{key:"user_report_enabled",value:!0}}]},{key:"ban",title:"禁封设置",icon:"fa fas fa-ban",fields:[{key:"ban_preset_reason",label:"预设封禁原因",type:"textarea",default:`spam|垃圾信息
|
||||
abuse|人身攻击
|
||||
violation|违规操作`,help:"每行一条:slug|显示名称",dependsOn:{key:"user_report_enabled",value:!0}},{key:"ban_appeal_desc",label:"申诉说明",type:"textarea",default:"",dependsOn:{key:"user_report_enabled",value:!0}},{key:"ban_appeal_keys",label:"申诉关键词",type:"input",default:"",help:"逗号分隔",dependsOn:{key:"user_report_enabled",value:!0}}]},{key:"image",title:"图片举报",icon:"fa fas fa-image",fields:[{key:"user_report_img_s",label:"启用图片举报",type:"switch",default:!0,dependsOn:{key:"user_report_enabled",value:!0}},{key:"user_report_desc",label:"举报说明",type:"textarea",default:"",dependsOn:{key:"user_report_img_s",value:!0}}]}]},fs={key:"users.sms",title:"短信接口",icon:"fa fas fa-comment",description:"配置短信验证码和短信通知服务的供应商、模板和限流策略。",defaults:{sms_enabled:!1,sms_provider:"aliyun",sms_number_limit_ch:!0,sms_access_key:"",sms_access_secret:"",sms_sign_name:"",sms_template_code:"",sms_code_length:6,sms_code_expire:300,sms_rate_limit:60,sms_daily_limit:10,sms_notify_bind:!0,sms_notify_login:!1,sms_notify_register:!0,sms_notify_reset_password:!0,sms_ali_api_type:"sms",sms_region_id:"cn-hangzhou",sms_tencent_app_id:"",sms_tencent_app_key:"",sms_tencent_secret_id:"",sms_tencent_secret_key:"",sms_tencent_region:"ap-guangzhou",sms_huawei_sender:"",sms_huawei_signature:"",sms_huawei_endpoint:"",sms_custom_url:"",sms_custom_method:"POST",sms_custom_auth_type:"header",sms_custom_auth_key:"",sms_custom_auth_value:"",sms_custom_headers:"",sms_custom_body:"",sms_custom_success_rule:""},groups:[{key:"provider",title:"供应商配置",icon:"fa fas fa-plug",fields:[{key:"sms_enabled",label:"启用短信服务",type:"switch",default:!1,help:"开启后支持短信验证码和短信通知"},{key:"sms_provider",label:"短信供应商",type:"select",default:"aliyun",options:[{label:"阿里云短信",value:"aliyun"},{label:"腾讯云短信",value:"tencent"},{label:"华为云短信",value:"huawei"},{label:"自定义接口",value:"custom"}],dependsOn:{key:"sms_enabled",value:!0}},{key:"sms_number_limit_ch",label:"仅发国内",type:"switch",default:!0,dependsOn:{key:"sms_enabled",value:!0},help:"开启后仅支持发送国内短信,关闭后可发送港澳台及国际短信"},{key:"sms_access_key",label:"AccessKey / SecretId / AppKey",type:"input",default:"",dependsOn:{key:"sms_enabled",value:!0},help:"阿里云填 AccessKey,腾讯云填 SecretId,华为云填 AppKey"},{key:"sms_access_secret",label:"AccessSecret / SecretKey / AppSecret",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_enabled",value:!0}}]},{key:"aliyun",title:"阿里云配置",icon:"fa fas fa-cloud",fields:[{key:"sms_ali_api_type",label:"接口类型",type:"radio",default:"sms",options:[{label:"短信服务",value:"sms"},{label:"号码认证",value:"verify"}],dependsOn:{key:"sms_provider",value:"aliyun"}},{key:"sms_region_id",label:"RegionId",type:"input",default:"cn-hangzhou",dependsOn:{key:"sms_provider",value:"aliyun"}}]},{key:"tencent",title:"腾讯云配置",icon:"fa fas fa-cloud",fields:[{key:"sms_tencent_app_id",label:"SdkAppId",type:"input",default:"",dependsOn:{key:"sms_provider",value:"tencent"},help:"腾讯云短信应用 ID"},{key:"sms_tencent_app_key",label:"AppKey",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_provider",value:"tencent"}},{key:"sms_tencent_secret_id",label:"SecretId",type:"input",default:"",dependsOn:{key:"sms_provider",value:"tencent"}},{key:"sms_tencent_secret_key",label:"SecretKey",type:"input",inputType:"password",default:"",dependsOn:{key:"sms_provider",value:"tencent"}},{key:"sms_tencent_region",label:"地域",type:"input",default:"ap-guangzhou",dependsOn:{key:"sms_provider",value:"tencent"}}]},{key:"huawei",title:"华为云配置",icon:"fa fas fa-cloud",fields:[{key:"sms_huawei_sender",label:"通道号 (sender)",type:"input",default:"",dependsOn:{key:"sms_provider",value:"huawei"}},{key:"sms_huawei_signature",label:"短信签名",type:"input",default:"",dependsOn:{key:"sms_provider",value:"huawei"},help:"华为云短信签名内容"},{key:"sms_huawei_endpoint",label:"API Endpoint",type:"input",default:"",dependsOn:{key:"sms_provider",value:"huawei"},help:"留空使用默认 endpoint"}]},{key:"custom",title:"自定义接口配置",icon:"fa fas fa-plug",fields:[{key:"sms_custom_url",label:"请求 URL",type:"input",default:"",dependsOn:{key:"sms_provider",value:"custom"},help:"支持 {phone} {code} {time} 变量"},{key:"sms_custom_method",label:"请求方法",type:"select",default:"POST",options:[{label:"POST",value:"POST"},{label:"GET",value:"GET"},{label:"PUT",value:"PUT"}],dependsOn:{key:"sms_provider",value:"custom"}},{key:"sms_custom_auth_type",label:"鉴权方式",type:"select",default:"header",options:[{label:"Header",value:"header"}],dependsOn:{key:"sms_provider",value:"custom"}},{key:"sms_custom_auth_key",label:"鉴权 Header 名",type:"input",default:"",dependsOn:{key:"sms_provider
Line truncated
|
||||
98|108|推荐包`,pay_balance_product_name:"",pay_balance_price:0,pay_balance_tag:"元",pay_balance_tag_class:"",pay_balance_product_custom_s:!0,pay_balance_product_custom_limit:9999,pay_balance_transfer_s:!1,pay_balance_transfer_service_charge:0,pay_balance_transfer_desc:"",pay_balance_pass_charge_s:!1,pay_balance_pass_charge_desc:"",pay_balance_pass_charge_only_password:!1,pay_balance_points_exchange_s:!1,pay_balance_points_exchange_rate:100,pay_balance_points_exchange_min_points:100,pay_balance_points_exchange_daily_max_points:1e5,pay_balance_points_exchange_desc:""},groups:[{key:"basic",title:"充值开关",icon:"fa fas fa-credit-card",fields:[{key:"pay_balance_s",label:"启用余额功能",type:"switch",default:!0,help:"开启后用户中心显示现金钱包,并默认允许余额支付(可在收款接口单独关闭)。充值需另配支付宝/微信等外部网关。"},{key:"pay_balance_desc",label:"充值说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_s",value:!0}}]},{key:"packages",title:"充值套餐",icon:"fa fas fa-folder-open",fields:[{key:"pay_balance_product",label:"套餐列表",type:"textarea",default:`30|30|入门包
|
||||
98|108|推荐包`,help:"每行一个套餐:支付金额|到账金额|标题",dependsOn:{key:"pay_balance_s",value:!0}}]},{key:"product",title:"充值产品",icon:"fa fas fa-archive",fields:[{key:"pay_balance_product_name",label:"充值产品",type:"input",default:"",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_price",label:"充值价格",type:"number",default:0,min:0,max:99999,dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_tag",label:"价格标签",type:"input",default:"元",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_tag_class",label:"标签样式",type:"input",default:"",dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_product_custom_s",label:"自定义金额",type:"switch",default:!0,dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_product_custom_limit",label:"自定义金额限制",type:"number",default:9999,min:1,max:99999,dependsOn:{key:"pay_balance_s",value:!0}}]},{key:"transfer",title:"余额转账",icon:"fa fas fa-exchange-alt",fields:[{key:"pay_balance_transfer_s",label:"启用余额转账",type:"switch",default:!1},{key:"pay_balance_transfer_service_charge",label:"转账手续费(%)",type:"number",default:0,min:0,max:50,dependsOn:{key:"pay_balance_transfer_s",value:!0}},{key:"pay_balance_transfer_desc",label:"转账说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_transfer_s",value:!0}}]},{key:"pass-charge",title:"充值卡免扣",icon:"fa fas fa-ticket-alt",fields:[{key:"pay_balance_pass_charge_s",label:"启用余额卡密兑换",type:"switch",default:!1},{key:"pay_balance_pass_charge_desc",label:"卡密兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_pass_charge_s",value:!0}},{key:"pay_balance_pass_charge_only_password",label:"仅密码兑换",type:"switch",default:!1,dependsOn:{key:"pay_balance_pass_charge_s",value:!0}}]},{key:"exchange",title:"余额兑换积分",icon:"fa fas fa-database",fields:[{key:"pay_balance_points_exchange_s",label:"启用余额兑换积分",type:"switch",default:!1,dependsOn:{key:"pay_balance_s",value:!0}},{key:"pay_balance_points_exchange_rate",label:"兑换比例",type:"number",default:100,min:1,max:1e4,help:"1 余额 = N 积分",dependsOn:{key:"pay_balance_points_exchange_s",value:!0}},{key:"pay_balance_points_exchange_min_points",label:"单笔最低购买积分",type:"number",default:100,min:1,max:1e7,dependsOn:{key:"pay_balance_points_exchange_s",value:!0}},{key:"pay_balance_points_exchange_daily_max_points",label:"每日最高购买积分",type:"number",default:1e5,min:1,max:1e7,dependsOn:{key:"pay_balance_points_exchange_s",value:!0}},{key:"pay_balance_points_exchange_desc",label:"兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_balance_points_exchange_s",value:!0}}]}]},ks={key:"payment.vip",title:"VIP会员",icon:"fa fas fa-gem",description:"对齐 legacy 双级会员:分档套餐、权益、续费/升级与积分兑换。",defaults:{nav_pay_vip:!0,nav_user_pay_vip:!0,pay_user_vip_1_s:!0,pay_user_vip_1_name:"一级会员",pay_user_vip_1_desc:"尊享一级会员特权",pay_user_vip_1_equity:"<li>免费下载部分资源</li><li>会员专属身份标识</li><li>付费内容会员价</li>",vip_1_product_s:!0,payment_vip_1_products:`30|59|1|month|限时|月卡
|
||||
98|199|3|month|特惠|季卡
|
||||
365|599|12|month|超值|年卡
|
||||
999|1299|0|day|永久|永久卡`,vip_1_img_icon:"",pay_user_vip_2_s:!0,pay_user_vip_2_name:"二级会员",pay_user_vip_2_desc:"尊享二级会员特权",pay_user_vip_2_equity:"<li>更高免费下载额度</li><li>更高等级身份标识</li><li>更多付费内容会员价</li>",vip_2_product_s:!0,payment_vip_2_products:`58|99|1|month|限时|月卡
|
||||
168|299|3|month|特惠|季卡
|
||||
598|999|12|month|超值|年卡
|
||||
1299|1999|0|day|永久|永久卡`,vip_2_img_icon:"",pay_user_vip_desc:"",pay_user_vip_more:"",pay_download_limit:0,pay_download_limit_vip_1:0,pay_download_limit_vip_2:0,pay_vip_pass_charge_s:!1,pay_vip_pass_charge_desc:"",pay_vip_pass_charge_only_password:!0,pay_vip_points_exchange_s:!1,pay_vip_points_exchange_desc:"",payment_vip_points_packages:`1|500|30|积分月卡
|
||||
1|5000|0|积分永久`,vip_renew:!0,vip_renew_desc:"",vip_renew_price_type:"discount",vip_renew_discount:8,vip_renew_reduce:"20.00",vip_upgrade:!0,vip_upgrade_desc:"",vip_upgrade_product:`unit|1|按剩余天数升级
|
||||
jump|199|升级永久二级会员
|
||||
permanent|299|永久一级升永久二级`},groups:[{key:"basic",title:"会员等级",icon:"fa fas fa-user",fields:[{key:"nav_pay_vip",label:"导航栏购买按钮",type:"switch",default:!0,help:"在顶部导航栏显示开通会员按钮;请注意顶部导航的整体宽度。"},{key:"nav_user_pay_vip",label:"用户框购买按钮",type:"switch",default:!0,help:"在导航栏用户框内显示开通会员按钮。"},{key:"pay_user_vip_1_s",label:"启用一级会员",type:"switch",default:!0},{key:"pay_user_vip_1_name",label:"一级会员名称",type:"input",default:"一级会员",dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"pay_user_vip_1_desc",label:"一级会员一句话简介",type:"input",default:"尊享一级会员特权",dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"pay_user_vip_1_equity",label:"一级会员权益 HTML",type:"textarea",default:"<li>免费下载部分资源</li><li>会员专属身份标识</li><li>付费内容会员价</li>",dependsOn:{key:"pay_user_vip_1_s",value:!0},help:"建议使用 <li> 列表项"},{key:"vip_1_img_icon",label:"一级会员图标 URL",type:"input",default:"",dependsOn:{key:"pay_user_vip_1_s",value:!0},help:"留空使用内置 vip-1.svg 图标"},{key:"pay_user_vip_2_s",label:"启用二级会员",type:"switch",default:!0},{key:"pay_user_vip_2_name",label:"二级会员名称",type:"input",default:"二级会员",dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"pay_user_vip_2_desc",label:"二级会员一句话简介",type:"input",default:"尊享二级会员特权",dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"pay_user_vip_2_equity",label:"二级会员权益 HTML",type:"textarea",default:"<li>更高免费下载额度</li><li>更高等级身份标识</li><li>更多付费内容会员价</li>",dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"vip_2_img_icon",label:"二级会员图标 URL",type:"input",default:"",dependsOn:{key:"pay_user_vip_2_s",value:!0},help:"留空使用内置 vip-2.svg 图标"},{key:"pay_user_vip_desc",label:"弹窗顶部会员说明",type:"textarea",default:""},{key:"pay_user_vip_more",label:"弹窗底部补充说明 HTML",type:"textarea",default:""}]},{key:"packages",title:"分档套餐",icon:"fa fas fa-gem",fields:[{key:"vip_1_product_s",label:"允许购买一级会员",type:"switch",default:!0,dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"payment_vip_1_products",label:"一级会员套餐",type:"textarea",default:`30|59|1|month|限时|月卡
|
||||
98|199|3|month|特惠|季卡
|
||||
365|599|12|month|超值|年卡
|
||||
999|1299|0|day|永久|永久卡`,dependsOn:{key:"vip_1_product_s",value:!0},help:"每行:执行价|原价|时长|单位(day|month)|标签|标题;时长 0=永久"},{key:"vip_2_product_s",label:"允许购买二级会员",type:"switch",default:!0,dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"payment_vip_2_products",label:"二级会员套餐",type:"textarea",default:`58|99|1|month|限时|月卡
|
||||
168|299|3|month|特惠|季卡
|
||||
598|999|12|month|超值|年卡
|
||||
1299|1999|0|day|永久|永久卡`,dependsOn:{key:"vip_2_product_s",value:!0},help:"每行:执行价|原价|时长|单位(day|month)|标签|标题;时长 0=永久"}]},{key:"points_exchange",title:"积分兑换会员",icon:"fa fas fa-database",fields:[{key:"pay_vip_points_exchange_s",label:"启用积分兑换",type:"switch",default:!1},{key:"payment_vip_points_packages",label:"兑换套餐",type:"textarea",default:`1|500|30|积分月卡
|
||||
1|5000|0|积分永久`,dependsOn:{key:"pay_vip_points_exchange_s",value:!0},help:"每行:等级|积分|天数|标题(天数 0=永久;仅未开通会员可兑)"},{key:"pay_vip_points_exchange_desc",label:"兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_vip_points_exchange_s",value:!0}}]},{key:"benefit",title:"下载权益",icon:"fa fas fa-gift",fields:[{key:"pay_download_limit",label:"普通用户下载限制",type:"number",default:0,min:0,max:9999,help:"0为不限制"},{key:"pay_download_limit_vip_1",label:"一级会员下载限制",type:"number",default:0,min:0,max:9999,dependsOn:{key:"pay_user_vip_1_s",value:!0}},{key:"pay_download_limit_vip_2",label:"二级会员下载限制",type:"number",default:0,min:0,max:9999,dependsOn:{key:"pay_user_vip_2_s",value:!0}},{key:"pay_vip_pass_charge_s",label:"会员卡密兑换",type:"switch",default:!1},{key:"pay_vip_pass_charge_desc",label:"卡密兑换说明",type:"textarea",default:"",dependsOn:{key:"pay_vip_pass_charge_s",value:!0}},{key:"pay_vip_pass_charge_only_password",label:"仅密码兑换",type:"switch",default:!0,dependsOn:{key:"pay_vip_pass_charge_s",value:!0},help:"开启后只需输入卡密;关闭则需卡号+卡密。"}]},{key:"renew",title:"续费设置",icon:"fa fas fa-sync-alt",fields:[{key:"vip_renew",label:"允许续费",type:"switch",default:!0},{key:"vip_renew_desc",label:"续费说明",type:"textarea",default:"",dependsOn:{key:"vip_renew",value:!0}},{key:"vip_renew_price_type",label:"续费价格类型",type:"radio",default:"discount",options:[{label:"相同价格",value:"same"},{label:"折扣价格",value:"discount"},{label:"优惠立减",value:"reduce"}],dependsOn:{key:"vip_renew",value:!0}},{key:"vip_renew_discount",label:"续费折扣(折,如 8=八折)",type:"number",default:8,min:1,max:100,dependsOn:{key:"vip_renew_price_type",value:"discount"}},{key:"vip_renew_reduce",label:"续费减免金额",type:"input",sanitize_type:"money_decimal",default:"20.00",min:0,max:9999,dependsOn:{key:"vip_renew_price_type",value:"reduce"}}]},{key:"upgrade",title:"升级设置",icon:"fa fas fa-arrow-up",fields:[{key:"vip_upgrade",label:"允许升级",type:"switch",default:!0},{key:"vip_upgrade_desc",label:"升级说明",type:"textarea",default:"",dependsOn:{key:"vip_upgrade",value:!0}},{key:"vip_upgrade_product",label:"升级产品",type:"textarea",default:`unit|1|按剩余天数升级
|
||||
jump|199|升级永久二级会员
|
||||
permanent|299|永久一级升永久二级`,dependsOn:{key:"vip_upgrade",value:!0},help:"每行一条。永久VIP1升级:permanent|价格|标题;按剩余天:unit|每日单价|标题;限时跳转永久:jump|价格|标题"}]}]},hs={key:"payment.revenue",title:"创作中心",icon:"fa fas fa-chart-line",description:"分别配置现金收益和积分收益的会员分成比例,结算周期结束后自动入账。",defaults:{pay_income_s:!1,payment_revenue_cycle_days:30,payment_revenue_note:"<p>订单完成并经过结算周期后,作者分成会自动转入对应的钱包。</p>",payment_revenue_cash_ratio_user:60,payment_revenue_cash_ratio_vip_1:70,payment_revenue_cash_ratio_vip_2:80,payment_revenue_points_ratio_user:0,payment_revenue_points_ratio_vip_1:0,payment_revenue_points_ratio_vip_2:0},groups:[{key:"basic",title:"创作中心设置",icon:"fa fas fa-cog",fields:[{key:"pay_income_s",label:"启用创作分成",type:"switch",default:!1},{key:"payment_revenue_cycle_days",label:"结算周期(天)",type:"number",default:30,min:1,max:365,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_note",label:"结算备注文案",type:"textarea",sanitize_type:"html",default:"<p>订单完成并经过结算周期后,作者分成会自动转入对应的钱包。</p>",help:"支持安全 HTML,结算后会展示在前台创作中心。",dependsOn:{key:"pay_income_s",value:!0}}]},{key:"cash",title:"现金收益分成",icon:"fa fas fa-credit-card",fields:[{key:"payment_revenue_cash_ratio_user",label:"普通用户分成比例(%)",type:"number",default:60,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_cash_ratio_vip_1",label:"一级会员分成比例(%)",type:"number",default:70,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_cash_ratio_vip_2",label:"二级会员分成比例(%)",type:"number",default:80,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}}]},{key:"points",title:"积分收益分成",icon:"fa fas fa-database",fields:[{key:"payment_revenue_points_ratio_user",label:"普通用户分成比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_points_ratio_vip_1",label:"一级会员分成比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}},{key:"payment_revenue_points_ratio_vip_2",label:"二级会员分成比例(%)",type:"number",default:0,min:0,max:100,dependsOn:{key:"pay_income_s",value:!0}}]}]},vs={key:"payment.affiliate",title:"推广返佣",icon:"fa fas fa-share-alt",description:"配置推广归因、分级佣金比例和结算规则。",defaults:{affiliate_enabled:!1,affiliate_ratio_user:5,affiliate_ratio_vip_1:5,affiliate_ratio_vip_2:5,affiliate_order_types:["membership","content"],affiliate_settlement_days:7,affiliate_promotion_text:""},groups:[{key:"policy",title:"返佣策略",icon:"fa fas fa-sitemap",fields:[{key:"affiliate_enabled",label:"启用推广返佣",type:"switch",default:!1},{key:"affiliate_ratio_user",label:"普通会员佣金比例(%)",type:"number",default:5,min:0,max:100,dependsOn:{key:"affiliate_enabled",value:!0}},{key:"affiliate_ratio_vip_1",label:"一级会员佣金比例(%)",type:"number",default:5,min:0,max:100,dependsOn:{key:"affiliate_enabled",value:!0}},{key:"affiliate_ratio_vip_2",label:"二级会员佣金比例(%)",type:"number",default:5,min:0,max:100,dependsOn:{key:"affiliate_enabled",value:!0}},{key:"affiliate_order_types",label:"适用订单类型",type:"checkbox",default:["membership","content"],sanitize_type:"array",options:[{label:"会员订单",value:"membership"},{label:"付费内容",value:"content"},{label:"购买积分",value:"credits"}],dependsOn:{key:"affiliate_enabled",value:!0}},{key:"affiliate_settlement_days",label:"结算观察期(天)",type:"number",default:7,min:0,max:90,dependsOn:{key:"affiliate_enabled",value:!0}}]},{key:"text",title:"文案设置",icon:"fa fas fa-pen",fields:[{key:"affiliate_promotion_text",label:"推广说明",type:"textarea",default:"",dependsOn:{key:"affiliate_enabled",value:!0}}]}]},gs={key:"payment.gateway",title:"收款接口",icon:"fa fas fa-credit-card",description:"管理已支持的收款通道:余额、支付宝、微信、PayPal、Stripe、易支付与卡密兑换。开启渠道后展开填写凭据。",defaults:{payment_wechat_enabled:!1,payment_alipay_enabled:!1,payment_paypal_enabled:!1,payment_stripe_enabled:!1,payment_epay_enabled:!1,payment_balance_enabled:!0,payment_card_pass_enabled:!1,wechat_merchantid:"",wechat_appid:"",wechat_payment_type:"native",wechat_api_v3_key:"",wechat_private_key_path:"",wechat_cert_path:"",alipay_appid:"",alipay_privatekey:"",alipay_payment_type:"page",alipay_app_public_cert_path:"",alipay_public_cert_path:"",alipay_root_cert_path:"",paypal_client_id:"",paypal_client_secret:"",paypal_currency:"USD",paypal_sandbox:!0,stripe_secret_key:"",stripe_publishable_key:"",stripe_webhook_secret:"",stripe_currency:"usd",stripe_tes
Line truncated
|
||||
Reference in new issue
Block a user