The structured groups introduced in the previous commit rendered every row fully expanded, which buried the fields an admin actually came to edit. They now behave like accordions and start collapsed. - 会员商品, 一级/二级会员续费 and 积分兑换明细 opt in via `collapsible` on the group schema. Each row shows only its header, carrying a summary line built from `listPreview` (价格:99.00 · 3 个月 / 积分:500 · 30 天), and expands on click. `defaultCollapsed` keeps the collapsed default; setting it to false restores the previous always-open behaviour. - 升级价格 splits into its three reference-theme blocks (月费升月费 / 月费升永久 / 永久升永久) through a new `sections` option on the accordion type, each block independently collapsible. - AksField keeps the existing open state keyed by index so adding or removing a row does not disturb the others, and the drag handle, delete button and chevron are excluded from the header toggle. - Non-collapsible groups are untouched: the accordion markup only renders when the schema opts in. Verified: php -l on the changed PHP, 656 Node contract tests passing (including new assertions that every collapsible group is opted in, that the upgrade sections cover exactly the declared fields, and that the SPA mirror matches), and the admin SPA builds.
499 lines
26 KiB
JavaScript
499 lines
26 KiB
JavaScript
/**
|
|
* VIP会员 — 结构 1:1 对照参考主题 Zibll:会员等级(开关)、会员权益
|
|
* (普通/一级/二级 tab)、会员购买选项(一级/二级/续费/升级 tab)、
|
|
* 积分兑换会员与界面文案。
|
|
*
|
|
* 会员商品 / 续费商品 / 升级价格 / 积分兑换明细均为结构化 group 或
|
|
* accordion,不再使用 `|` 分隔的 textarea。等级 Tab 标题通过 titleKey
|
|
* 绑定「会员显示名称」,改名即改 Tab 名。
|
|
*/
|
|
|
|
const VIP_EQUITY_DEFAULT = '<li>全站资源折扣购买</li><li>部分内容免费阅读</li><li>一对一技术指导</li><li>VIP用户专属QQ群</li>';
|
|
|
|
const vipTagPalette = [
|
|
{ label: '#f74b3d', value: 'b-red' },
|
|
{ label: '#f3920a', value: 'b-yellow' },
|
|
{ label: '#08c4c1', value: 'b-cyan' },
|
|
{ label: '#0a8cf3', value: 'b-blue' },
|
|
{ label: '#1fd05a', value: 'b-green' },
|
|
{ label: '#c133f5', value: 'b-purple' },
|
|
{ label: '#121517', value: 'b-black' },
|
|
{ label: 'linear-gradient(135deg, #ffbeb4 10%, #f61a1a 100%)', value: 'jb-red' },
|
|
{ label: 'linear-gradient(135deg, #ff5e7f 30%, #ff967e 100%)', value: 'jb-pink' },
|
|
{ label: 'linear-gradient(135deg, #ffd6b2 10%, #ff651c 100%)', value: 'jb-yellow' },
|
|
{ label: 'linear-gradient(140deg, #039ab3 10%, #58dbcf 90%)', value: 'jb-cyan' },
|
|
{ label: 'linear-gradient(135deg, #b6e6ff 10%, #198aff 100%)', value: 'jb-blue' },
|
|
{ label: 'linear-gradient(135deg, #ccffcd 10%, #52bb51 100%)', value: 'jb-green' },
|
|
{ label: 'linear-gradient(135deg, #fec2ff 10%, #d000de 100%)', value: 'jb-purple' },
|
|
{ label: 'linear-gradient(25deg, #eab869 10%, #fbecd4 60%, #ffe0ae 100%)', value: 'jb-vip1' },
|
|
{ label: 'linear-gradient(317deg, #4d4c4c 30%, #878787 70%, #5f5c5c 100%)', value: 'jb-vip2' },
|
|
];
|
|
|
|
const vipUnitOptions = [
|
|
{ label: '天', value: 'day' },
|
|
{ label: '月', value: 'month' },
|
|
];
|
|
|
|
// 会员商品/续费商品的手风琴配置:默认收起,标题行显示价格与时长摘要。
|
|
const vipProductGroupOptions = {
|
|
collapsible: true,
|
|
defaultCollapsed: true,
|
|
listPreview: { prefix: '价格:', titleKey: 'price', descKey: 'time', descUnitKey: 'unit' },
|
|
};
|
|
|
|
// 积分兑换明细的手风琴配置:默认收起,标题行显示积分与时长摘要。
|
|
const vipPointsGroupOptions = {
|
|
collapsible: true,
|
|
defaultCollapsed: true,
|
|
listPreview: { prefix: '积分:', titleKey: 'points', descKey: 'time', descUnitKey: 'unit' },
|
|
};
|
|
|
|
/**
|
|
* 会员商品字段集(参考主题 CFS_Module::vip_product)。
|
|
*/
|
|
function vipProductFields() {
|
|
return [
|
|
{ key: 'price', label: '执行价', type: 'number', sanitize_type: 'money_decimal', default: '699.00', min: 0, suffix: '元', help: '会员的实际购买价格' },
|
|
{ key: 'show_price', label: '原价', type: 'number', sanitize_type: 'money_decimal', default: '999.00', min: 0, suffix: '元', help: '显示在执行价格前面,并划掉' },
|
|
{ key: 'tag', label: '促销标签', type: 'textarea', sanitize_type: 'html', default: '', rows: 1, help: '支持HTML,请注意控制长度' },
|
|
{ key: 'tag_class', label: '标签颜色', type: 'palette', default: 'jb-yellow', dependsOn: { key: 'tag', operator: 'not_empty' }, options: vipTagPalette },
|
|
{ key: 'time', label: '会员有效时间', type: 'spinner', default: 3, min: 0, max: 3600, step: 1, help: '开通会员的时长。填0则为永久会员' },
|
|
{ key: 'unit', label: '时长单位', type: 'radio', default: 'month', inline: true, dependsOn: { key: 'time', operator: 'truthy' }, options: vipUnitOptions },
|
|
{ key: '_time_permanent_hint', label: '', type: 'alert', alertType: 'success', ui_only: true, dependsOn: { key: 'time', operator: 'eq', value: 0 }, content: '会员有效时间已设置为:永久会员' },
|
|
];
|
|
}
|
|
|
|
/**
|
|
* 会员等级 Tab 字段集(参考主题 CFS_Module::vip_tab,显示名称并入 Tab)。
|
|
*/
|
|
function vipLevelTabFields(level) {
|
|
const dep = { key: `pay_user_vip_${level}_s`, value: true };
|
|
return [
|
|
{ key: `pay_user_vip_${level}_name`, label: '会员显示名称', type: 'input', default: level === 1 ? '黄金会员' : '钻石会员', dependsOn: dep, help: '会员名称(例如“黄金会员”、“超级会员”)' },
|
|
{ key: `pay_user_vip_${level}_desc`, label: '一句话简介', type: 'input', default: '尊享专属特权', dependsOn: dep },
|
|
{ key: `pay_user_vip_${level}_equity`, label: '会员权益 HTML', type: 'textarea', sanitize_type: 'html', default: VIP_EQUITY_DEFAULT, rows: 4, dependsOn: dep, help: '建议使用 <li> 列表项' },
|
|
{ key: `vip_${level}_product_s`, label: '购买会员', type: 'switch', default: true, dependsOn: dep, help: '关闭后则不能付费购买会员,但可通过积分兑换会员,请确保已开启积分以及积分兑换会员功能' },
|
|
{
|
|
key: `vip_${level}_product`,
|
|
label: '会员商品',
|
|
type: 'group',
|
|
max: 8,
|
|
button_title: '添加会员商品',
|
|
default: [
|
|
{ price: 99, show_price: 199, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 199, show_price: 299, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
...vipProductGroupOptions,
|
|
dependsOn: { all: [dep, { key: `vip_${level}_product_s`, value: true }] },
|
|
help: '会员购买价格配置:执行价、原价、促销标签、标签颜色与会员有效时间',
|
|
fields: vipProductFields(),
|
|
},
|
|
{ key: `vip_${level}_img_icon`, label: '会员图标', type: 'upload', default: '', dependsOn: dep, help: `留空使用内置 vip-${level}.svg 图标;建议尺寸300x300` },
|
|
];
|
|
}
|
|
|
|
export const vipSchema = {
|
|
key: 'payment.vip',
|
|
title: 'VIP会员',
|
|
icon: 'fa fas fa-gem',
|
|
description: '双级会员:等级开关、权益(下载次数与限速)、会员商品、续费/升级与积分兑换。',
|
|
defaults: {
|
|
nav_pay_vip: true,
|
|
nav_user_pay_vip: true,
|
|
pay_user_vip_1_s: true,
|
|
pay_user_vip_1_name: '黄金会员',
|
|
pay_user_vip_1_desc: '尊享专属特权',
|
|
pay_user_vip_1_equity: VIP_EQUITY_DEFAULT,
|
|
vip_1_product_s: true,
|
|
vip_1_product: [
|
|
{ price: 99, show_price: 199, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 199, show_price: 299, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
vip_1_img_icon: '',
|
|
pay_user_vip_2_s: true,
|
|
pay_user_vip_2_name: '钻石会员',
|
|
pay_user_vip_2_desc: '尊享专属特权',
|
|
pay_user_vip_2_equity: VIP_EQUITY_DEFAULT,
|
|
vip_2_product_s: true,
|
|
vip_2_product: [
|
|
{ price: 99, show_price: 199, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 199, show_price: 299, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
vip_2_img_icon: '',
|
|
pay_user_vip_desc: '开通VIP会员,享受会员专属折扣以及多项特权',
|
|
pay_user_vip_more: '<div>购买后不支持退款</div><div>VIP权益仅适用于本站</div><div>欢迎与站长联系</div>',
|
|
pay_download_limit: 0,
|
|
pay_download_speed: 0,
|
|
pay_download_limit_vip_1: 0,
|
|
pay_download_speed_vip_1: 0,
|
|
pay_download_limit_vip_2: 0,
|
|
pay_download_speed_vip_2: 0,
|
|
vip_1_product_s: true,
|
|
vip_renew: true,
|
|
vip_renew_desc: '立即续费会员,畅享VIP权益',
|
|
vip_renew_price_type: 'discount',
|
|
vip_renew_discount: 8,
|
|
vip_renew_reduce: '20.00',
|
|
vip_1_renew_product: [
|
|
{ price: 69, show_price: 199, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 169, show_price: 299, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
vip_2_renew_product: [
|
|
{ price: 269, show_price: 599, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 369, show_price: 899, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
vip_2_product_s: true,
|
|
vip_renew: true,
|
|
vip_renew_discount: 8,
|
|
vip_renew_reduce: '20.00',
|
|
vip_upgrade: true,
|
|
vip_upgrade_desc: '升级VIP会员,享更多会员权益',
|
|
vip_upgrade_product: {
|
|
month_to_month_s: true,
|
|
unit_price: '10.00',
|
|
unit_tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐',
|
|
unit_tag_class: 'jb-yellow',
|
|
jump_s: false,
|
|
jump_price: '199.00',
|
|
jump_show_price: '299.00',
|
|
jump_tag: '<i class="fa fas fa-fw fa-bolt"></i> 升级特惠',
|
|
jump_tag_class: 'jb-red',
|
|
permanent_price: '199.00',
|
|
permanent_show_price: '299.00',
|
|
permanent_tag: '<i class="fa fas fa-fw fa-bolt"></i> 升级特惠',
|
|
permanent_tag_class: 'jb-red',
|
|
},
|
|
pay_vip_points_exchange_s: false,
|
|
pay_vip_points_exchange_product: [
|
|
{ points: 500, level: 1, time: 30, unit: 'day' },
|
|
{ points: 5000, level: 1, time: 'Permanent' },
|
|
],
|
|
pay_vip_points_exchange_desc: '',
|
|
},
|
|
groups: [
|
|
{
|
|
key: 'notice',
|
|
title: '说明',
|
|
icon: 'fa fas fa-info-circle',
|
|
fields: [
|
|
{
|
|
key: 'vip_notice',
|
|
label: '',
|
|
type: 'content',
|
|
ui_only: true,
|
|
content: '<ul style="margin:0 0 0 18px;line-height:1.9"><li>开启付费会员功能之前,请先配置好收款接口,确保网站收款正常</li><li>会员功能的设置项目较多,请仔细核对,避免出现价格、时间的问题</li><li>配合设置名称、有效期等可搭配出不同类型的会员</li><li>管理员可在后台为用户单独开启会员</li></ul>',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: 'basic',
|
|
title: '会员等级',
|
|
icon: 'fa fas fa-user',
|
|
fields: [
|
|
{ key: 'nav_pay_vip', label: '导航栏购买按钮', type: 'switch', default: true, help: '在顶部导航栏显示开通会员按钮;请注意顶部导航的整体宽度。' },
|
|
{ key: 'nav_user_pay_vip', label: '用户框购买按钮', type: 'switch', default: true, help: '在导航栏用户框内显示开通会员按钮。' },
|
|
{ key: 'pay_user_vip_1_s', label: '启用一级会员', type: 'switch', default: true },
|
|
{
|
|
key: 'vip_level_order_notice',
|
|
label: '',
|
|
type: 'notice',
|
|
ui_only: true,
|
|
alertType: 'danger',
|
|
dependsOn: { all: [{ key: 'pay_user_vip_2_s', value: true }, { key: 'pay_user_vip_1_s', operator: 'falsy' }] },
|
|
content: '<div style="text-align:center"><b>必须先开启一级会员后才能开启二级会员!</b></div>',
|
|
},
|
|
{ key: 'pay_user_vip_2_s', label: '启用二级会员', type: 'switch', default: true },
|
|
],
|
|
},
|
|
{
|
|
key: 'benefit',
|
|
title: '会员权益',
|
|
icon: 'fa fas fa-gift',
|
|
fields: [
|
|
{
|
|
key: 'vip_benefit',
|
|
label: '会员权益',
|
|
type: 'tabbed',
|
|
tabs: [
|
|
{
|
|
key: 'ordinary',
|
|
title: '普通用户',
|
|
fields: [
|
|
{ key: 'pay_download_limit', label: '付费资源:免费资源每日可下载(个)', type: 'number', default: 0, min: 0, max: 9999, help: '普通用户每日最多可下载几个免费资源(为0则不限制)' },
|
|
{ key: 'pay_download_speed', label: '付费资源:下载限速(KB/s)', type: 'number', default: 0, min: 0, help: '付费下载限制最大下载速度(为0则不限制);只对本地服务器文件有效' },
|
|
],
|
|
},
|
|
{
|
|
key: 'vip1',
|
|
title: '一级会员',
|
|
titleKey: 'pay_user_vip_1_name',
|
|
titleFallback: '一级会员',
|
|
fields: [
|
|
{ key: 'pay_download_limit_vip_1', label: '付费资源:免费资源每日可下载(个)', type: 'number', default: 0, min: 0, max: 9999, dependsOn: { key: 'pay_user_vip_1_s', value: true }, help: '一级会员每日最多可下载几个免费资源(为0则不限制)' },
|
|
{ key: 'pay_download_speed_vip_1', label: '付费资源:下载限速(KB/s)', type: 'number', default: 0, min: 0, dependsOn: { key: 'pay_user_vip_1_s', value: true }, help: '付费下载限制最大下载速度(为0则不限制);只对本地服务器文件有效' },
|
|
],
|
|
},
|
|
{
|
|
key: 'vip2',
|
|
title: '二级会员',
|
|
titleKey: 'pay_user_vip_2_name',
|
|
titleFallback: '二级会员',
|
|
fields: [
|
|
{ key: 'pay_download_limit_vip_2', label: '付费资源:免费资源每日可下载(个)', type: 'number', default: 0, min: 0, max: 9999, dependsOn: { key: 'pay_user_vip_2_s', value: true }, help: '二级会员每日最多可下载几个免费资源(为0则不限制)' },
|
|
{ key: 'pay_download_speed_vip_2', label: '付费资源:下载限速(KB/s)', type: 'number', default: 0, min: 0, dependsOn: { key: 'pay_user_vip_2_s', value: true }, help: '付费下载限制最大下载速度(为0则不限制);只对本地服务器文件有效' },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: 'opt',
|
|
title: '会员购买选项',
|
|
icon: 'fa fas fa-shopping-cart',
|
|
fields: [
|
|
{
|
|
key: 'vip_opt',
|
|
label: '会员购买选项',
|
|
type: 'tabbed',
|
|
tabs: [
|
|
{
|
|
key: 'vip1',
|
|
title: '一级会员',
|
|
titleKey: 'pay_user_vip_1_name',
|
|
titleFallback: '一级会员',
|
|
fields: [
|
|
...vipLevelTabFields(1),
|
|
],
|
|
},
|
|
{
|
|
key: 'vip2',
|
|
title: '二级会员',
|
|
titleKey: 'pay_user_vip_2_name',
|
|
titleFallback: '二级会员',
|
|
fields: [
|
|
...vipLevelTabFields(2),
|
|
],
|
|
},
|
|
{
|
|
key: 'renew',
|
|
title: '会员续费',
|
|
fields: [
|
|
{
|
|
key: 'vip_renew',
|
|
label: '允许续费',
|
|
type: 'switch',
|
|
default: true,
|
|
help: '关闭后则不能续费,只能会员到期之后再购买。永久会员不需要续费',
|
|
},
|
|
{
|
|
key: 'vip_renew_desc',
|
|
label: '续费介绍',
|
|
type: 'input',
|
|
default: '立即续费会员,畅享VIP权益',
|
|
dependsOn: { key: 'vip_renew', value: true },
|
|
help: '续费会员的一句话简介',
|
|
},
|
|
{
|
|
key: 'vip_renew_price_type',
|
|
label: '续费价格类型',
|
|
type: 'select',
|
|
default: 'discount',
|
|
dependsOn: { key: 'vip_renew', value: true },
|
|
options: [
|
|
{ label: '相同价格', value: 'same' },
|
|
{ label: '折扣价格', value: 'discount' },
|
|
{ label: '优惠立减', value: 'reduce' },
|
|
{ label: '自定义商品', value: 'customize' },
|
|
],
|
|
help: '自定义商品时,按下方「一级会员续费」「二级会员续费」的商品选项计价',
|
|
},
|
|
{
|
|
key: 'vip_renew_discount',
|
|
label: '续费折扣',
|
|
type: 'slider',
|
|
sanitize_type: 'float',
|
|
default: 8,
|
|
min: 0.1,
|
|
max: 9.9,
|
|
step: 0.1,
|
|
unit: '折',
|
|
dependsOn: { key: 'vip_renew_price_type', value: 'discount' },
|
|
help: '在会员商品基础上打几折,如 8 = 八折',
|
|
},
|
|
{
|
|
key: 'vip_renew_reduce',
|
|
label: '续费减免金额',
|
|
type: 'spinner',
|
|
sanitize_type: 'money_decimal',
|
|
default: '20.00',
|
|
min: 0,
|
|
max: 500,
|
|
step: 5,
|
|
unit: '元',
|
|
dependsOn: { key: 'vip_renew_price_type', value: 'reduce' },
|
|
help: '在会员商品基础上优惠的金额,优惠后总金额不能为0元',
|
|
},
|
|
{
|
|
key: 'vip_1_renew_product',
|
|
label: '一级会员续费',
|
|
type: 'group',
|
|
max: 8,
|
|
button_title: '添加续费商品',
|
|
default: [
|
|
{ price: 69, show_price: 199, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 169, show_price: 299, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
dependsOn: { key: 'vip_renew_price_type', value: 'customize' },
|
|
help: '一级会员续费的商品选项',
|
|
...vipProductGroupOptions,
|
|
fields: vipProductFields(),
|
|
},
|
|
{
|
|
key: 'vip_2_renew_product',
|
|
label: '二级会员续费',
|
|
type: 'group',
|
|
max: 8,
|
|
button_title: '添加续费商品',
|
|
default: [
|
|
{ price: 269, show_price: 599, tag: '<i class="fa fas fa-fw fa-bolt"></i> 限时特惠', time: 3, unit: 'month' },
|
|
{ price: 369, show_price: 899, tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', time: 6, unit: 'month' },
|
|
],
|
|
dependsOn: { key: 'vip_renew_price_type', value: 'customize' },
|
|
help: '二级会员续费的商品选项',
|
|
...vipProductGroupOptions,
|
|
fields: vipProductFields(),
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: 'upgrade',
|
|
title: '会员升级',
|
|
fields: [
|
|
{ key: 'vip_upgrade', label: '允许升级', type: 'switch', default: true },
|
|
{ key: 'vip_upgrade_desc', label: '升级介绍', type: 'input', default: '升级VIP会员,享更多会员权益', dependsOn: { key: 'vip_upgrade', value: true }, help: '升级会员的一句话简介' },
|
|
{
|
|
key: 'vip_upgrade_product',
|
|
label: '升级价格',
|
|
type: 'accordion',
|
|
default: {
|
|
month_to_month_s: true,
|
|
unit_price: '10.00',
|
|
unit_tag: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐',
|
|
unit_tag_class: 'jb-yellow',
|
|
jump_s: false,
|
|
jump_price: '199.00',
|
|
jump_show_price: '299.00',
|
|
jump_tag: '<i class="fa fas fa-fw fa-bolt"></i> 升级特惠',
|
|
jump_tag_class: 'jb-red',
|
|
permanent_price: '199.00',
|
|
permanent_show_price: '299.00',
|
|
permanent_tag: '<i class="fa fas fa-fw fa-bolt"></i> 升级特惠',
|
|
permanent_tag_class: 'jb-red',
|
|
},
|
|
dependsOn: { key: 'vip_upgrade', value: true },
|
|
help: '会员升级的商品选项',
|
|
sections: [
|
|
{ title: '月费会员升级月费会员', keys: ['_upgrade_unit_notice', 'month_to_month_s', 'unit_price', 'unit_tag', 'unit_tag_class'] },
|
|
{ title: '月费会员升级永久会员', keys: ['_upgrade_jump_notice', 'jump_s', 'jump_price', 'jump_show_price', 'jump_tag', 'jump_tag_class'] },
|
|
{ title: '永久会员升级永久会员', keys: ['permanent_price', 'permanent_show_price', 'permanent_tag', 'permanent_tag_class'] },
|
|
],
|
|
fields: [
|
|
{ key: '_upgrade_unit_notice', label: '', type: 'notice', ui_only: true, alertType: 'warning', content: '月费会员升级为月费会员,用户会员有效期不会改变;价格按照会员剩余天数计算升级价格,请在下方设置每天的单价' },
|
|
{ key: 'month_to_month_s', label: '月费会员升级月费会员', type: 'switch', default: true },
|
|
{ key: 'unit_price', label: '天单价', type: 'number', sanitize_type: 'money_decimal', default: '10.00', min: 0, unit: '元', dependsOn: { key: 'month_to_month_s', value: true } },
|
|
{ key: 'unit_tag', label: '促销标签', type: 'textarea', sanitize_type: 'html', default: '<i class="fa fas fa-fw fa-bolt"></i> 站长推荐', rows: 1, dependsOn: { key: 'month_to_month_s', value: true }, help: '支持HTML,请注意控制长度' },
|
|
{ key: 'unit_tag_class', label: '标签颜色', type: 'palette', default: 'jb-yellow', dependsOn: { all: [{ key: 'month_to_month_s', value: true }, { key: 'unit_tag', operator: 'not_empty' }] }, options: vipTagPalette },
|
|
{ key: '_upgrade_jump_notice', label: '', type: 'notice', ui_only: true, alertType: 'warning', content: '如果网站可以购买月费会员和永久会员,则可以开启此项;允许用户由月费会员直接升级到更高一级的永久会员,用户之前还未到期的部分将自动一起转为永久会员,可能会涉及到差价问题,请自行告知用户;如果网站没有永久会员的购买选项请务必关闭此项' },
|
|
{ key: 'jump_s', label: '月费会员升级永久会员', type: 'switch', default: false },
|
|
{ key: 'jump_price', label: '执行价', type: 'number', sanitize_type: 'money_decimal', default: '199.00', min: 0, unit: '元', dependsOn: { key: 'jump_s', value: true }, help: '月费会员升级永久会员的价格' },
|
|
{ key: 'jump_show_price', label: '原价', type: 'number', sanitize_type: 'money_decimal', default: '299.00', min: 0, unit: '元', dependsOn: { key: 'jump_s', value: true }, help: '显示在执行价格前面,并划掉' },
|
|
{ key: 'jump_tag', label: '促销标签', type: 'textarea', sanitize_type: 'html', default: '<i class="fa fas fa-fw fa-bolt"></i> 升级特惠', rows: 1, dependsOn: { key: 'jump_s', value: true }, help: '支持HTML,请注意控制长度' },
|
|
{ key: 'jump_tag_class', label: '标签颜色', type: 'palette', default: 'jb-red', dependsOn: { all: [{ key: 'jump_s', value: true }, { key: 'jump_tag', operator: 'not_empty' }] }, options: vipTagPalette },
|
|
{ key: 'permanent_price', label: '执行价', type: 'number', sanitize_type: 'money_decimal', default: '199.00', min: 0, unit: '元', help: '永久会员升级永久会员的价格' },
|
|
{ key: 'permanent_show_price', label: '原价', type: 'number', sanitize_type: 'money_decimal', default: '299.00', min: 0, unit: '元', help: '显示在执行价格前面,并划掉' },
|
|
{ key: 'permanent_tag', label: '促销标签', type: 'textarea', sanitize_type: 'html', default: '<i class="fa fas fa-fw fa-bolt"></i> 升级特惠', rows: 1, help: '支持HTML,请注意控制长度' },
|
|
{ key: 'permanent_tag_class', label: '标签颜色', type: 'palette', default: 'jb-red', dependsOn: { key: 'permanent_tag', operator: 'not_empty' }, options: vipTagPalette },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
key: 'points-exchange',
|
|
title: '积分兑换会员',
|
|
icon: 'fa fas fa-database',
|
|
fields: [
|
|
{ key: 'pay_vip_points_exchange_s', label: '启用积分兑换', type: 'switch', default: false, help: '开启后用户可使用积分兑换会员;由于积分可免费获取,所以积分兑换会员功能不支持升级及续费' },
|
|
{
|
|
key: 'pay_vip_points_exchange_product',
|
|
label: '积分兑换明细',
|
|
type: 'group',
|
|
max: 16,
|
|
button_title: '添加积分兑换商品',
|
|
default: [
|
|
{ points: 500, level: 1, time: 30, unit: 'day' },
|
|
{ points: 5000, level: 1, time: 'Permanent' },
|
|
],
|
|
dependsOn: { key: 'pay_vip_points_exchange_s', value: true },
|
|
help: '每一行为一个可兑换的会员套餐',
|
|
...vipPointsGroupOptions,
|
|
fields: [
|
|
{ key: 'points', label: '使用积分', type: 'number', default: 100, min: 0, unit: '积分' },
|
|
{
|
|
key: 'level',
|
|
label: '兑换会员',
|
|
type: 'radio',
|
|
default: 1,
|
|
inline: true,
|
|
options: [
|
|
{ label: '一级会员', value: 1 },
|
|
{ label: '二级会员', value: 2 },
|
|
],
|
|
},
|
|
{ key: 'time', label: '兑换时长', type: 'input', default: '', help: '填 Permanent 为永久' },
|
|
{
|
|
key: 'unit',
|
|
label: '时长单位',
|
|
type: 'radio',
|
|
default: 'day',
|
|
inline: true,
|
|
dependsOn: { key: 'time', operator: 'neq', value: 'Permanent' },
|
|
options: vipUnitOptions,
|
|
},
|
|
],
|
|
},
|
|
{ key: 'pay_vip_points_exchange_desc', label: '兑换说明', type: 'textarea', sanitize_type: 'html', default: '', rows: 2, dependsOn: { key: 'pay_vip_points_exchange_s', value: true }, help: '显示在积分兑换弹窗底部,可以为提醒事项、兑换协议等,支持HTML代码' },
|
|
],
|
|
},
|
|
{
|
|
key: 'modal-copy',
|
|
title: '界面文案',
|
|
icon: 'fa fas fa-align-left',
|
|
fields: [
|
|
{
|
|
key: 'pay_user_vip_desc',
|
|
label: '会员介绍',
|
|
type: 'input',
|
|
default: '开通VIP会员,享受会员专属折扣以及多项特权',
|
|
dependsOn: { any: [{ key: 'pay_user_vip_1_s', value: true }, { key: 'pay_user_vip_2_s', value: true }] },
|
|
help: '显示在开通界面顶部一句话简介,可以为会员权益简介或者活动介绍',
|
|
},
|
|
{
|
|
key: 'pay_user_vip_more',
|
|
label: '开通会员更多内容',
|
|
type: 'textarea',
|
|
sanitize_type: 'html',
|
|
default: '<div>购买后不支持退款</div><div>VIP权益仅适用于本站</div><div>欢迎与站长联系</div>',
|
|
rows: 4,
|
|
dependsOn: { any: [{ key: 'pay_user_vip_1_s', value: true }, { key: 'pay_user_vip_2_s', value: true }] },
|
|
help: '显示在开通界面底部位置,可以为提醒事项、用户协议等,支持HTML代码',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|