@yaoxiu/marketing-dsl 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/index.cjs +312 -159
- package/dist/docs/index.js +312 -159
- package/dist/index.cjs +5 -2
- package/dist/index.d.cts +16 -8
- package/dist/index.d.ts +16 -8
- package/dist/index.js +5 -2
- package/package.json +1 -1
package/dist/docs/index.cjs
CHANGED
|
@@ -327,23 +327,45 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
|
|
|
327
327
|
tone: "info",
|
|
328
328
|
text: "`close` \u7684 `reason` \u4F1A\u4E00\u8D77\u4F20\u7ED9\u5BBF\u4E3B\uFF0C\u5BBF\u4E3B\u636E\u6B64\u51B3\u5B9A\u540E\u7EED\u884C\u4E3A\uFF0C\u5E76\u539F\u6837\u4E0A\u62A5\u7ED9\u540E\u7AEF\u3002\u4E0D\u5199 `reason` \u9ED8\u8BA4\u662F `action`\u3002"
|
|
329
329
|
},
|
|
330
|
-
{ t: "h3", text: "\u300C\u4E0D\u518D\u63D0\
|
|
330
|
+
{ t: "h3", text: "\u300C\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A\u300D/\u300C\u4E0D\u518D\u63D0\u793A\u300D\uFF1AdismissToday / dismissForever" },
|
|
331
331
|
{
|
|
332
332
|
t: "p",
|
|
333
|
-
text: "\
|
|
333
|
+
text: "\u5BBF\u4E3B\u6CE8\u518C\u4E86\u4E24\u4E2A\u73B0\u6210\u7684\u65B9\u6CD5\uFF0C\u7528 `call` \u8C03\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u65B0\u7684\u52A8\u4F5C\u7C7B\u578B\uFF1A`dismissToday`\uFF08\u4ECA\u5929\u4E4B\u5185\u4E0D\u518D\u5C55\u793A\u8FD9\u6761\u7269\u6599\uFF09\u3001`dismissForever`\uFF08\u6C38\u4E45\u4E0D\u518D\u5C55\u793A\uFF09\u3002"
|
|
334
334
|
},
|
|
335
335
|
{
|
|
336
336
|
t: "code",
|
|
337
|
-
code:
|
|
337
|
+
code: `// \u300C\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A\u300D\u6309\u94AE\uFF1A\u5148\u5199\u6807\u8BB0\uFF0C\u518D\u5173\u6389\u8FD9\u4E00\u5C42
|
|
338
|
+
"action": {
|
|
339
|
+
"type": "sequence",
|
|
340
|
+
"actions": [
|
|
341
|
+
{ "type": "call", "name": "dismissToday" },
|
|
342
|
+
{ "type": "close", "reason": "dismiss-today" }
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// \u300C\u4E0D\u518D\u63D0\u793A\u300D\u6309\u94AE\uFF1A\u540C\u6837\u4E24\u6B65
|
|
347
|
+
"action": {
|
|
348
|
+
"type": "sequence",
|
|
349
|
+
"actions": [
|
|
350
|
+
{ "type": "call", "name": "dismissForever" },
|
|
351
|
+
{ "type": "close", "reason": "dismiss-forever" }
|
|
352
|
+
]
|
|
353
|
+
}`
|
|
338
354
|
},
|
|
339
355
|
{
|
|
340
|
-
t: "
|
|
341
|
-
|
|
356
|
+
t: "note",
|
|
357
|
+
tone: "warn",
|
|
358
|
+
text: "**\u6807\u8BB0\u548C\u5173\u95ED\u662F\u4E24\u56DE\u4E8B\uFF0C`close` \u5FC5\u987B\u81EA\u5DF1\u914D\u3002** \u8FD9\u4E24\u4E2A\u65B9\u6CD5\u53EA\u5199\u4E00\u6761\u300C\u4EE5\u540E\u522B\u518D\u5C55\u793A\u300D\u7684\u8BB0\u5F55\uFF0C\u4E0D\u4F1A\u987A\u624B\u628A\u5F53\u524D\u8FD9\u5C42\u5173\u6389\u2014\u2014\u7559\u51FA\u300C\u5148\u52FE\u4E00\u4E2A\u590D\u9009\u6846\u3001\u7A0D\u540E\u518D\u70B9\u5173\u95ED\u300D\u8FD9\u7C7B\u4EA4\u4E92\u7684\u4F59\u5730\u3002\u53EA\u5199 `call` \u4E0D\u5199 `close`\uFF0C\u7528\u6237\u70B9\u5B8C\u6309\u94AE\u5F39\u7A97\u8FD8\u6775\u5728\u90A3\u513F\u3002"
|
|
342
359
|
},
|
|
343
360
|
{
|
|
344
361
|
t: "note",
|
|
345
362
|
tone: "warn",
|
|
346
|
-
text: "**\
|
|
363
|
+
text: "**\u8BB0\u5F55\u5B58\u5728\u7528\u6237\u6D4F\u89C8\u5668\u672C\u5730\uFF0C\u6309\u767B\u5F55\u8D26\u53F7\u9694\u79BB\u3002** \u540C\u4E00\u53F0\u7535\u8111\u6362\u4E2A\u8D26\u53F7\u767B\u5F55\u4E92\u4E0D\u5F71\u54CD\uFF0C\u4F46**\u6362\u8BBE\u5907\u3001\u6362\u6D4F\u89C8\u5668\u3001\u6E05\u7F13\u5B58\u5C31\u5931\u6548**\u2014\u2014\u5B83\u662F\u300C\u5C11\u70E6\u6211\u4E00\u4E0B\u300D\u7684\u4F53\u9A8C\u4F18\u5316\uFF0C\u4E0D\u662F\u300C\u540E\u7AEF\u6C38\u4E45\u538B\u5236\u8FD9\u6761\u6295\u653E\u300D\u7684\u51ED\u636E\u3002\u771F\u6B63\u7684\u957F\u671F\u9891\u63A7\u4ECD\u7531\u540E\u7AEF\u7B97\u3002"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
t: "note",
|
|
367
|
+
tone: "info",
|
|
368
|
+
text: "`close` \u7684 `reason` \u7167\u65E7\u8981\u5199\uFF1A\u5173\u95ED\u4E8B\u4EF6\u4ECD\u4F1A\u539F\u6837\u4E0A\u62A5\u7ED9\u540E\u7AEF\uFF0C`reason` \u662F\u540E\u7AEF\u552F\u4E00\u80FD\u770B\u5230\u7684\u300C\u7528\u6237\u4E3A\u4EC0\u4E48\u5173\u300D\u3002\u8FD9\u4E2A\u4FE1\u606F\u8D70 `close` \u7684 `reason`\uFF0C\u4E0D\u8D70 `extra`\u2014\u2014`extra` \u53EA\u5C5E\u4E8E `click`\u3002"
|
|
347
369
|
},
|
|
348
370
|
{ t: "h3", text: "call \u7684\u9002\u7528\u8FB9\u754C" },
|
|
349
371
|
{
|
|
@@ -355,15 +377,15 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
|
|
|
355
377
|
head: ["\u2705 \u8BE5\u7528 call", "\u274C \u4E0D\u8BE5\u7528 call"],
|
|
356
378
|
rows: [
|
|
357
379
|
[
|
|
358
|
-
"\u5524\u8D77\u5145\u503C\u5F39\u7A97\u3001\u6253\u5F00\u5BA2\u670D\u4F1A\u8BDD\u3001\u590D\u5236\u5230\u526A\u8D34\u677F\u3001\u8DF3\u8F6C\u5E94\u7528\u5185\u7279\u5B9A\u9875\u9762",
|
|
359
|
-
"\
|
|
380
|
+
"\u5524\u8D77\u5145\u503C\u5F39\u7A97\u3001\u6253\u5F00\u5BA2\u670D\u4F1A\u8BDD\u3001\u590D\u5236\u5230\u526A\u8D34\u677F\u3001\u8DF3\u8F6C\u5E94\u7528\u5185\u7279\u5B9A\u9875\u9762\u3001\u300C\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A / \u4E0D\u518D\u63D0\u793A\u300D\uFF08`dismissToday` / `dismissForever`\uFF09",
|
|
381
|
+
"\u8BA9\u5BBF\u4E3B\u505A\u4E00\u4EF6\u5B83\u6CA1\u6CE8\u518C\u8FC7\u7684\u4E8B"
|
|
360
382
|
]
|
|
361
383
|
]
|
|
362
384
|
},
|
|
363
385
|
{
|
|
364
386
|
t: "note",
|
|
365
387
|
tone: "info",
|
|
366
|
-
text: "\
|
|
388
|
+
text: "`call` \u53EA\u80FD\u8C03**\u4E0A\u9762\u6E05\u5355\u91CC\u5DF2\u6CE8\u518C**\u7684\u65B9\u6CD5\u540D\uFF0C\u540D\u5B57\u662F\u5BBF\u4E3B\u4E0E\u8FD0\u8425\u4E4B\u95F4\u7684\u5951\u7EA6\uFF0C\u5199\u4E86\u6CA1\u6CE8\u518C\u7684\u540D\u5B57\uFF0C\u90A3\u4E00\u6B65\u4F1A\u9759\u9ED8\u5931\u6548\uFF08\u7269\u6599\u7167\u5E38\u663E\u793A\uFF0C\u6309\u94AE\u70B9\u4E86\u6CA1\u53CD\u5E94\uFF09\u3002\u6240\u4EE5\u81EA\u5DF1\u53D1\u660E\u4E00\u4E2A\u540D\u5B57\u53BB\u300C\u8BB0\u4E00\u7B14\u8D26\u300D\u662F\u884C\u4E0D\u901A\u7684\u2014\u2014\u672C\u5730\u8BB0\u8D26\u7528\u73B0\u6210\u7684 `dismissToday` / `dismissForever`\uFF0C\u9700\u8981\u540E\u7AEF\u77E5\u9053\u7684\u4E8B\u4E00\u5F8B\u8D70\u4E0A\u62A5\uFF08`close` \u7684 `reason`\uFF0C\u6216 `track`\uFF09\u3002"
|
|
367
389
|
},
|
|
368
390
|
{ t: "h3", text: "\u66DD\u5149\u548C\u5173\u95ED\u4E5F\u8981\u57CB\u70B9\uFF1Astage.onShow / stage.onClose" },
|
|
369
391
|
{
|
|
@@ -427,7 +449,7 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6`
|
|
|
427
449
|
{
|
|
428
450
|
t: "note",
|
|
429
451
|
tone: "info",
|
|
430
|
-
text: '`close` \u53EA\u662F\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C**\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u7531\u5BBF\u4E3B\u51B3\u5B9A**\uFF1B\
|
|
452
|
+
text: '`close` \u53EA\u662F\u901A\u77E5\u5BBF\u4E3B\u300C\u7528\u6237\u5173\u6389\u4E86\u300D\uFF0C**\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u7531\u5BBF\u4E3B\u51B3\u5B9A**\uFF1B`reason` \u4F1A\u539F\u6837\u4E0A\u62A5\uFF0C\u540E\u7AEF\u636E\u6B64\u5224\u65AD\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\u3002\u60F3\u5728\u524D\u7AEF\u4E5F\u7ACB\u523B\u751F\u6548\uFF08\u4ECA\u5929\u4E4B\u5185 / \u6C38\u4E45\u4E0D\u518D\u51FA\u73B0\uFF09\uFF0C\u5728 `close` \u4E4B\u524D\u518D\u52A0\u4E00\u6761 `{ "type": "call", "name": "dismissToday" }`\uFF08\u6216 `dismissForever`\uFF09\uFF0C\u89C1\u4E0A\u4E00\u8282\u3002'
|
|
431
453
|
},
|
|
432
454
|
{
|
|
433
455
|
t: "note",
|
|
@@ -2884,7 +2906,8 @@ var noticeToPopup = {
|
|
|
2884
2906
|
fontSize: 13,
|
|
2885
2907
|
cursor: "pointer"
|
|
2886
2908
|
},
|
|
2887
|
-
|
|
2909
|
+
// 公告条行末的关闭只管「这一次」,不写本地标记
|
|
2910
|
+
action: { type: "close", reason: "user-close" }
|
|
2888
2911
|
}
|
|
2889
2912
|
]
|
|
2890
2913
|
}
|
|
@@ -3251,12 +3274,14 @@ var confirmAndSwitch = {
|
|
|
3251
3274
|
cursor: "pointer"
|
|
3252
3275
|
},
|
|
3253
3276
|
// 确认后整个关掉,两层一起消失。
|
|
3254
|
-
//
|
|
3277
|
+
// 标记写在这一步而不是上一层的「不再提醒」按钮上:
|
|
3278
|
+
// 那个按钮只是打开二次确认,用户还可能反悔,真正的意图在这里才确定
|
|
3255
3279
|
action: {
|
|
3256
3280
|
type: "sequence",
|
|
3257
3281
|
actions: [
|
|
3258
3282
|
{ type: "track", event: "popup_never_remind_confirm" },
|
|
3259
|
-
{ type: "
|
|
3283
|
+
{ type: "call", name: "dismissForever" },
|
|
3284
|
+
{ type: "closeAll", reason: "dismiss-forever" }
|
|
3260
3285
|
]
|
|
3261
3286
|
},
|
|
3262
3287
|
children: [
|
|
@@ -3592,8 +3617,15 @@ var imageBanner = {
|
|
|
3592
3617
|
fontSize: 12,
|
|
3593
3618
|
cursor: "pointer"
|
|
3594
3619
|
},
|
|
3595
|
-
//
|
|
3596
|
-
|
|
3620
|
+
// 「不再提醒」两步走:先调宿主的 dismissForever 写本地标记(前端立刻不再展示),
|
|
3621
|
+
// 再 close 关掉;reason 照旧上报给后端,那是后端唯一看得到的「为什么关」
|
|
3622
|
+
action: {
|
|
3623
|
+
type: "sequence",
|
|
3624
|
+
actions: [
|
|
3625
|
+
{ type: "call", name: "dismissForever" },
|
|
3626
|
+
{ type: "close", reason: "dismiss-forever" }
|
|
3627
|
+
]
|
|
3628
|
+
}
|
|
3597
3629
|
}
|
|
3598
3630
|
]
|
|
3599
3631
|
}
|
|
@@ -3701,8 +3733,15 @@ function createDrawerBanner(options) {
|
|
|
3701
3733
|
fontSize: 9,
|
|
3702
3734
|
cursor: "pointer"
|
|
3703
3735
|
},
|
|
3704
|
-
//
|
|
3705
|
-
|
|
3736
|
+
// 「不再提醒」两步走:dismissForever 写本地标记 + close 关掉,缺一不可
|
|
3737
|
+
// (这两个方法只写标记、不关闭)
|
|
3738
|
+
action: {
|
|
3739
|
+
type: "sequence",
|
|
3740
|
+
actions: [
|
|
3741
|
+
{ type: "call", name: "dismissForever" },
|
|
3742
|
+
{ type: "close", reason: "dismiss-forever" }
|
|
3743
|
+
]
|
|
3744
|
+
}
|
|
3706
3745
|
}
|
|
3707
3746
|
]
|
|
3708
3747
|
};
|
|
@@ -4762,20 +4801,22 @@ var achieveCell3 = (verb, value, unit, label) => ({
|
|
|
4762
4801
|
type: "flex",
|
|
4763
4802
|
style: {
|
|
4764
4803
|
direction: "column",
|
|
4804
|
+
// grid 不在白名单,用 flex wrap + 半宽复刻 grid-template-columns: 1fr 1fr(gap 9)
|
|
4765
4805
|
width: "calc(50% - 5px)",
|
|
4766
4806
|
background: "rgba(255,255,255,0.16)",
|
|
4767
4807
|
borderWidth: 1,
|
|
4768
4808
|
borderStyle: "solid",
|
|
4769
4809
|
borderColor: "rgba(255,255,255,0.2)",
|
|
4770
4810
|
radius: 10,
|
|
4771
|
-
|
|
4772
|
-
|
|
4811
|
+
// .period-price-modal .ac 把基础规则的 9px 11px 覆盖成 10px 13px
|
|
4812
|
+
padding: "10px 13px"
|
|
4773
4813
|
},
|
|
4774
4814
|
children: [
|
|
4775
4815
|
{
|
|
4776
|
-
//
|
|
4816
|
+
// .ac .n:line-height 1.1 × 20px = 22px,显式给死,
|
|
4817
|
+
// 否则 20px 数字的默认行高(≈1.5)会把格子撑高 8px 左右
|
|
4777
4818
|
type: "flex",
|
|
4778
|
-
style: { align: "baseline",
|
|
4819
|
+
style: { align: "baseline", height: 22, whiteSpace: "nowrap" },
|
|
4779
4820
|
children: [
|
|
4780
4821
|
{
|
|
4781
4822
|
type: "text",
|
|
@@ -4784,7 +4825,10 @@ var achieveCell3 = (verb, value, unit, label) => ({
|
|
|
4784
4825
|
fontSize: 11.5,
|
|
4785
4826
|
fontWeight: "600",
|
|
4786
4827
|
lineHeight: 1.1,
|
|
4787
|
-
|
|
4828
|
+
letterSpacing: 0.2,
|
|
4829
|
+
marginRight: 3,
|
|
4830
|
+
// demo 是 opacity .7 叠在 .m-top 的白字上,等价于这个色值
|
|
4831
|
+
color: "rgba(255,255,255,0.7)"
|
|
4788
4832
|
}
|
|
4789
4833
|
},
|
|
4790
4834
|
{
|
|
@@ -4795,14 +4839,25 @@ var achieveCell3 = (verb, value, unit, label) => ({
|
|
|
4795
4839
|
{
|
|
4796
4840
|
type: "text",
|
|
4797
4841
|
content: ` ${unit}`,
|
|
4798
|
-
style: {
|
|
4842
|
+
style: {
|
|
4843
|
+
fontSize: 12,
|
|
4844
|
+
fontWeight: "600",
|
|
4845
|
+
lineHeight: 1.1,
|
|
4846
|
+
// demo 是 opacity .85
|
|
4847
|
+
color: "rgba(255,255,255,0.85)"
|
|
4848
|
+
}
|
|
4799
4849
|
}
|
|
4800
4850
|
]
|
|
4801
4851
|
},
|
|
4802
4852
|
{
|
|
4803
4853
|
type: "text",
|
|
4804
4854
|
content: label,
|
|
4805
|
-
style: {
|
|
4855
|
+
style: {
|
|
4856
|
+
fontSize: 11,
|
|
4857
|
+
lineHeight: 1.4,
|
|
4858
|
+
marginTop: 2,
|
|
4859
|
+
color: "rgba(255,255,255,0.85)"
|
|
4860
|
+
}
|
|
4806
4861
|
}
|
|
4807
4862
|
]
|
|
4808
4863
|
});
|
|
@@ -4813,7 +4868,15 @@ var loseRow3 = {
|
|
|
4813
4868
|
{
|
|
4814
4869
|
type: "text",
|
|
4815
4870
|
content: "",
|
|
4816
|
-
style: {
|
|
4871
|
+
style: {
|
|
4872
|
+
width: 6,
|
|
4873
|
+
height: 6,
|
|
4874
|
+
radius: "50%",
|
|
4875
|
+
background: "#f53f3f",
|
|
4876
|
+
marginTop: 7,
|
|
4877
|
+
// demo 的 flex: none —— 文案换行时圆点不许被压扁
|
|
4878
|
+
flexShrink: "0"
|
|
4879
|
+
}
|
|
4817
4880
|
},
|
|
4818
4881
|
{
|
|
4819
4882
|
type: "flex",
|
|
@@ -4829,20 +4892,6 @@ var loseRow3 = {
|
|
|
4829
4892
|
color: "#1f2533"
|
|
4830
4893
|
}
|
|
4831
4894
|
},
|
|
4832
|
-
{
|
|
4833
|
-
type: "text",
|
|
4834
|
-
content: "{{ item.tag }}",
|
|
4835
|
-
visibleWhen: "item.tag != ''",
|
|
4836
|
-
style: {
|
|
4837
|
-
background: "{{ item.sev == 'lose' ? '#ffd5cf' : 'rgba(255,255,255,0.78)' }}",
|
|
4838
|
-
color: "{{ item.sev == 'lose' ? '#cf1322' : '#8a7f78' }}",
|
|
4839
|
-
fontSize: 10,
|
|
4840
|
-
fontWeight: "800",
|
|
4841
|
-
radius: 4,
|
|
4842
|
-
padding: "1px 6px",
|
|
4843
|
-
whiteSpace: "nowrap"
|
|
4844
|
-
}
|
|
4845
|
-
},
|
|
4846
4895
|
{
|
|
4847
4896
|
type: "text",
|
|
4848
4897
|
content: "\u2014 {{ item.t }}",
|
|
@@ -4856,14 +4905,18 @@ var tierCard3 = {
|
|
|
4856
4905
|
type: "box",
|
|
4857
4906
|
style: {
|
|
4858
4907
|
flex: "1",
|
|
4859
|
-
height:
|
|
4908
|
+
height: 119,
|
|
4860
4909
|
radius: 12,
|
|
4861
4910
|
background: "{{ item.key == current.key ? '#fffaf0' : '#ffffff' }}",
|
|
4862
4911
|
borderStyle: "solid",
|
|
4863
4912
|
borderWidth: "{{ item.key == current.key ? '2px' : '1px' }}",
|
|
4864
4913
|
borderColor: "{{ item.key == current.key ? '#f0a000' : '#e5e8ed' }}",
|
|
4865
|
-
|
|
4914
|
+
shadow: "{{ item.key == current.key ? '0 7px 18px rgba(240,160,0,0.1)' : 'none' }}",
|
|
4915
|
+
cursor: "pointer",
|
|
4916
|
+
transition: "border-color 0.15s, background 0.15s, box-shadow 0.15s"
|
|
4866
4917
|
},
|
|
4918
|
+
// .tcol:hover { border-color: var(--gold) }
|
|
4919
|
+
hoverStyle: { borderColor: "#faad14" },
|
|
4867
4920
|
action: {
|
|
4868
4921
|
type: "sequence",
|
|
4869
4922
|
actions: [
|
|
@@ -4877,6 +4930,8 @@ var tierCard3 = {
|
|
|
4877
4930
|
},
|
|
4878
4931
|
children: [
|
|
4879
4932
|
{
|
|
4933
|
+
// .thot:top -9、字号 11、padding 2px 8px、radius 6。
|
|
4934
|
+
// 宽 38 = 2 字 × 11px + 左右 8px;居中靠 left: calc(50% - 19px)
|
|
4880
4935
|
type: "text",
|
|
4881
4936
|
rect: ["calc(50% - 19px)", -9, 38, 22],
|
|
4882
4937
|
content: "\u63A8\u8350",
|
|
@@ -4888,29 +4943,41 @@ var tierCard3 = {
|
|
|
4888
4943
|
fontWeight: "800",
|
|
4889
4944
|
radius: 6,
|
|
4890
4945
|
textAlign: "center",
|
|
4891
|
-
lineHeight: 22
|
|
4946
|
+
lineHeight: 22,
|
|
4947
|
+
whiteSpace: "nowrap"
|
|
4892
4948
|
}
|
|
4893
4949
|
},
|
|
4894
4950
|
{
|
|
4895
4951
|
type: "text",
|
|
4896
4952
|
rect: [0, 12, "100%", 19],
|
|
4897
4953
|
content: "{{ item.p }}",
|
|
4898
|
-
style: { fontSize: 13, color: "#8a909c", textAlign: "center" }
|
|
4954
|
+
style: { fontSize: 13, lineHeight: 1.45, color: "#8a909c", textAlign: "center" }
|
|
4899
4955
|
},
|
|
4900
4956
|
{
|
|
4901
4957
|
type: "flex",
|
|
4902
|
-
rect: [0,
|
|
4958
|
+
rect: [0, 36, "100%", 26],
|
|
4903
4959
|
style: { justify: "center", align: "baseline" },
|
|
4904
4960
|
children: [
|
|
4905
4961
|
{
|
|
4962
|
+
// .tpr i:符号比数字小一号、字重 600
|
|
4906
4963
|
type: "text",
|
|
4907
4964
|
content: "\xA5",
|
|
4908
|
-
style: {
|
|
4965
|
+
style: {
|
|
4966
|
+
fontSize: 14,
|
|
4967
|
+
fontWeight: "600",
|
|
4968
|
+
lineHeight: 1.2,
|
|
4969
|
+
color: "{{ item.key == current.key ? '#d46b08' : '#1f2533' }}"
|
|
4970
|
+
}
|
|
4909
4971
|
},
|
|
4910
4972
|
{
|
|
4911
4973
|
type: "text",
|
|
4912
4974
|
content: "{{ item.price }}",
|
|
4913
|
-
style: {
|
|
4975
|
+
style: {
|
|
4976
|
+
fontSize: 21,
|
|
4977
|
+
fontWeight: "800",
|
|
4978
|
+
lineHeight: 1.2,
|
|
4979
|
+
color: "{{ item.key == current.key ? '#d46b08' : '#1f2533' }}"
|
|
4980
|
+
}
|
|
4914
4981
|
}
|
|
4915
4982
|
]
|
|
4916
4983
|
},
|
|
@@ -4918,14 +4985,21 @@ var tierCard3 = {
|
|
|
4918
4985
|
type: "text",
|
|
4919
4986
|
rect: [4, 63, "calc(100% - 8px)", 32],
|
|
4920
4987
|
content: "{{ item.per }}",
|
|
4921
|
-
style: {
|
|
4988
|
+
style: {
|
|
4989
|
+
fontSize: 11,
|
|
4990
|
+
lineHeight: 1.5,
|
|
4991
|
+
textAlign: "center",
|
|
4992
|
+
color: "{{ item.key == current.key ? '#d46b08' : '#8a909c' }}",
|
|
4993
|
+
fontWeight: "{{ item.key == current.key ? '600' : '400' }}"
|
|
4994
|
+
}
|
|
4922
4995
|
},
|
|
4923
4996
|
{
|
|
4997
|
+
// .tflag 的 margin-top: auto(贴底)在绝对定位里直接写死 y = 119 - 9 - 15
|
|
4924
4998
|
type: "text",
|
|
4925
|
-
rect: [0,
|
|
4999
|
+
rect: [0, 95, "100%", 15],
|
|
4926
5000
|
content: "{{ item.flag }}",
|
|
4927
5001
|
visibleWhen: "item.flag != ''",
|
|
4928
|
-
style: { fontSize: 11, color: "#8a909c", textAlign: "center" }
|
|
5002
|
+
style: { fontSize: 11, lineHeight: 1.35, color: "#8a909c", textAlign: "center" }
|
|
4929
5003
|
}
|
|
4930
5004
|
]
|
|
4931
5005
|
};
|
|
@@ -4934,13 +5008,37 @@ var quotaLow = {
|
|
|
4934
5008
|
type: "popup",
|
|
4935
5009
|
meta: { name: "\u642C\u5BB6\u6B21\u6570\u5C06\u5C3D \xB7 \u989D\u5EA6\u8FDB\u5EA6\u6761\uFF08\u590D\u523B\u8FD0\u8425 demo\uFF09" },
|
|
4936
5010
|
stage: {
|
|
5011
|
+
// .modal.period-price-modal { width: min(520px, calc(100vw - 24px)) }
|
|
4937
5012
|
width: 520,
|
|
4938
5013
|
height: "auto",
|
|
4939
5014
|
layout: "flow",
|
|
4940
5015
|
mask: true,
|
|
4941
5016
|
maskClosable: false,
|
|
4942
|
-
closeButton: {
|
|
4943
|
-
|
|
5017
|
+
closeButton: {
|
|
5018
|
+
// .m-close:24×24 的半透明白圆点,字符 ×、15px
|
|
5019
|
+
show: true,
|
|
5020
|
+
position: "top-right",
|
|
5021
|
+
offset: [14, 14],
|
|
5022
|
+
size: 24,
|
|
5023
|
+
icon: "\xD7",
|
|
5024
|
+
style: { background: "rgba(255,255,255,0.3)", fontSize: 15, color: "#ffffff" }
|
|
5025
|
+
},
|
|
5026
|
+
// .modal 的圆角与投影(--shadow-lg)
|
|
5027
|
+
style: { radius: 18, shadow: "0 28px 72px rgba(16,27,51,0.24)" },
|
|
5028
|
+
// demo 的 animation: pop .38s cubic-bezier(.16,1,.3,1) both
|
|
5029
|
+
// 注意 easing 的小数必须写成 0.16 —— 校验的正则不认 CSS 允许的 .16 简写
|
|
5030
|
+
animate: {
|
|
5031
|
+
name: "pop",
|
|
5032
|
+
duration: 380,
|
|
5033
|
+
easing: "cubic-bezier(0.16, 1, 0.3, 1)",
|
|
5034
|
+
fill: "both"
|
|
5035
|
+
}
|
|
5036
|
+
},
|
|
5037
|
+
keyframes: {
|
|
5038
|
+
pop: {
|
|
5039
|
+
from: { opacity: 0, transform: "translateY(14px) scale(0.96)" },
|
|
5040
|
+
to: { opacity: 1, transform: "none" }
|
|
5041
|
+
}
|
|
4944
5042
|
},
|
|
4945
5043
|
data: {
|
|
4946
5044
|
// 实时统计走后端数据源。$source 填的是宿主注册过的数据源名(不是接口地址),
|
|
@@ -4948,20 +5046,11 @@ var quotaLow = {
|
|
|
4948
5046
|
stat: { $source: "userStatistics" },
|
|
4949
5047
|
// 总额度:运营按当前套餐手填。为什么不走接口、以后怎么换,见文件头注释
|
|
4950
5048
|
total: 30,
|
|
5049
|
+
// 三条都没有状态标签 —— demo 这一屏的 lose 配置里就没有 tag 字段
|
|
4951
5050
|
lose: [
|
|
4952
|
-
{ b: "\u6279\u91CF\u642C\u5BB6",
|
|
4953
|
-
{
|
|
4954
|
-
|
|
4955
|
-
tag: "\u5C06\u505C\u7528",
|
|
4956
|
-
sev: "lose",
|
|
4957
|
-
t: "\u6E90\u5934\u8D27\u6E90\u65AD\u4F9B\uFF0C\u9009\u54C1\u3001\u94FA\u8D27\u3001\u4EE3\u53D1\u90FD\u8981\u624B\u52A8\u505A"
|
|
4958
|
-
},
|
|
4959
|
-
{
|
|
4960
|
-
b: "AI \u81EA\u52A8\u4F18\u5316",
|
|
4961
|
-
tag: "\u5C06\u6682\u505C",
|
|
4962
|
-
sev: "pause",
|
|
4963
|
-
t: "\u65B0\u5546\u54C1\u4E0D\u518D\u8865\u4E3B\u6807\u9898 / \u77ED\u6807\u9898 / \u767D\u5E95\u56FE"
|
|
4964
|
-
}
|
|
5051
|
+
{ b: "\u6279\u91CF\u642C\u5BB6", t: "\u989D\u5EA6\u5F52\u96F6\u540E\u65E0\u6CD5\u7EE7\u7EED\u4E0A\u8D27" },
|
|
5052
|
+
{ b: "1688 \u4E00\u4EF6\u4EE3\u53D1", t: "\u6E90\u5934\u8D27\u6E90\u65AD\u4F9B\uFF0C\u9009\u54C1\u3001\u94FA\u8D27\u3001\u4EE3\u53D1\u90FD\u8981\u624B\u52A8\u505A" },
|
|
5053
|
+
{ b: "AI \u81EA\u52A8\u4F18\u5316", t: "\u65B0\u5546\u54C1\u4E0D\u518D\u8865\u4E3B\u6807\u9898 / \u77ED\u6807\u9898 / \u767D\u5E95\u56FE" }
|
|
4965
5054
|
],
|
|
4966
5055
|
// 价格档位从后端数据源取,后端返回几档就渲染几档,配置时不用知道数量
|
|
4967
5056
|
tiers: { $source: "listRenewTiers", params: { scene: "quota_low" } }
|
|
@@ -4969,118 +5058,114 @@ var quotaLow = {
|
|
|
4969
5058
|
state: { period: 1 },
|
|
4970
5059
|
derived: { current: { list: "tiers", indexBy: "period" } },
|
|
4971
5060
|
nodes: [
|
|
4972
|
-
// =====
|
|
5061
|
+
// ===== .m-top 深色渐变头部:(标签 + 额度条)同排 + 2×2 成果格 =====
|
|
4973
5062
|
{
|
|
4974
5063
|
type: "flex",
|
|
4975
5064
|
style: {
|
|
4976
5065
|
direction: "column",
|
|
4977
5066
|
background: "linear-gradient(135deg,#2b0f0f,#3a1414)",
|
|
4978
|
-
padding: "20px 22px 16px"
|
|
4979
|
-
gap: 13
|
|
5067
|
+
padding: "20px 22px 16px"
|
|
4980
5068
|
},
|
|
4981
5069
|
children: [
|
|
4982
5070
|
{
|
|
4983
|
-
|
|
4984
|
-
content: "\u26A1 \u642C\u5BB6\u6B21\u6570\u5373\u5C06\u7528\u5B8C",
|
|
4985
|
-
style: {
|
|
4986
|
-
// 不写 alignSelf 会被 flex 列拉满整行,标签必须按内容宽度
|
|
4987
|
-
alignSelf: "flex-start",
|
|
4988
|
-
background: "rgba(255,255,255,0.18)",
|
|
4989
|
-
color: "#ffffff",
|
|
4990
|
-
fontSize: 12,
|
|
4991
|
-
fontWeight: "700",
|
|
4992
|
-
radius: 6,
|
|
4993
|
-
padding: "5px 10px"
|
|
4994
|
-
}
|
|
4995
|
-
},
|
|
4996
|
-
{
|
|
4997
|
-
// 四格并列写死(扁平对象没法 bind 遍历),flex + wrap 排成 2×2。
|
|
4998
|
-
// 第一格的数字不是统计字段,而是「总额度 − 剩余次数」现算出来的
|
|
4999
|
-
type: "flex",
|
|
5000
|
-
style: { gap: 9, wrap: true },
|
|
5001
|
-
children: [
|
|
5002
|
-
achieveCell3("\u5DF2\u7528", USED, "\u6B21", "\u642C\u5BB6\u6B21\u6570"),
|
|
5003
|
-
achieveCell3("\u5DF2\u4E0A\u67B6", "{{ stat.move_success_count }}", "\u4E2A", "\u7D2F\u8BA1\u4E0A\u67B6\u5546\u54C1"),
|
|
5004
|
-
achieveCell3("\u65E5\u5747", "{{ stat.avg_daily_move_count }}", "\u4E2A", "\u5E73\u5747\u6BCF\u5929\u4E0A\u67B6"),
|
|
5005
|
-
achieveCell3(
|
|
5006
|
-
"\u5DF2\u8865\u9F50",
|
|
5007
|
-
"{{ stat.white_image_fill_count }}",
|
|
5008
|
-
"\u5F20",
|
|
5009
|
-
"\u767D\u5E95\u56FE \xB7 \u5408\u89C4\u53EF\u62A5\u6D3B\u52A8"
|
|
5010
|
-
)
|
|
5011
|
-
]
|
|
5012
|
-
}
|
|
5013
|
-
]
|
|
5014
|
-
},
|
|
5015
|
-
// ===== 白色 body =====
|
|
5016
|
-
{
|
|
5017
|
-
type: "flex",
|
|
5018
|
-
style: { direction: "column", background: "#ffffff", padding: "22px 26px 24px" },
|
|
5019
|
-
children: [
|
|
5020
|
-
// ===== 额度进度条:轨道 + 填充条 + 百分比表达式(本示例的重点)=====
|
|
5021
|
-
{
|
|
5071
|
+
// .m-top-head:右侧留 30px 给关闭按钮让位
|
|
5022
5072
|
type: "flex",
|
|
5023
5073
|
style: {
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
padding: "
|
|
5028
|
-
gap: 4
|
|
5074
|
+
align: "center",
|
|
5075
|
+
justify: "space-between",
|
|
5076
|
+
gap: 14,
|
|
5077
|
+
padding: "0 30px 0 0"
|
|
5029
5078
|
},
|
|
5030
5079
|
children: [
|
|
5031
5080
|
{
|
|
5032
|
-
//
|
|
5081
|
+
// .tag:flex: none,按内容宽度,不许被额度条挤扁
|
|
5082
|
+
type: "text",
|
|
5083
|
+
content: "\u26A1 \u642C\u5BB6\u6B21\u6570\u5373\u5C06\u7528\u5B8C",
|
|
5084
|
+
style: {
|
|
5085
|
+
background: "rgba(255,255,255,0.18)",
|
|
5086
|
+
color: "#ffffff",
|
|
5087
|
+
fontSize: 12,
|
|
5088
|
+
fontWeight: "700",
|
|
5089
|
+
radius: 6,
|
|
5090
|
+
padding: "3px 10px",
|
|
5091
|
+
flexShrink: "0",
|
|
5092
|
+
whiteSpace: "nowrap"
|
|
5093
|
+
}
|
|
5094
|
+
},
|
|
5095
|
+
{
|
|
5096
|
+
// ===== 额度进度条(本示例的重点)。.m-top .quota 反白配色版 =====
|
|
5033
5097
|
type: "flex",
|
|
5034
|
-
style: {
|
|
5098
|
+
style: {
|
|
5099
|
+
direction: "column",
|
|
5100
|
+
flex: "1",
|
|
5101
|
+
maxWidth: 280,
|
|
5102
|
+
background: "rgba(255,255,255,0.12)",
|
|
5103
|
+
borderWidth: 1,
|
|
5104
|
+
borderStyle: "solid",
|
|
5105
|
+
borderColor: "rgba(255,255,255,0.16)",
|
|
5106
|
+
radius: 7,
|
|
5107
|
+
padding: "3px 10px 4px"
|
|
5108
|
+
},
|
|
5035
5109
|
children: [
|
|
5036
5110
|
{
|
|
5111
|
+
// .qh:左「搬家次数剩余」,右加粗的剩余次数
|
|
5037
5112
|
type: "flex",
|
|
5038
|
-
style: { align: "baseline",
|
|
5113
|
+
style: { align: "baseline", justify: "space-between" },
|
|
5039
5114
|
children: [
|
|
5040
5115
|
{
|
|
5041
5116
|
type: "text",
|
|
5042
5117
|
content: "\u642C\u5BB6\u6B21\u6570\u5269\u4F59",
|
|
5043
|
-
style: {
|
|
5118
|
+
style: {
|
|
5119
|
+
fontSize: 10.5,
|
|
5120
|
+
lineHeight: 1.25,
|
|
5121
|
+
color: "rgba(255,255,255,0.85)"
|
|
5122
|
+
}
|
|
5044
5123
|
},
|
|
5045
5124
|
{
|
|
5046
5125
|
type: "text",
|
|
5047
5126
|
content: "{{ user.collectCount }} \u6B21",
|
|
5048
5127
|
style: {
|
|
5049
|
-
fontSize:
|
|
5128
|
+
fontSize: 12.5,
|
|
5050
5129
|
fontWeight: "800",
|
|
5051
|
-
lineHeight: 1.
|
|
5052
|
-
color: "#
|
|
5130
|
+
lineHeight: 1.15,
|
|
5131
|
+
color: "#ffb066"
|
|
5132
|
+
}
|
|
5133
|
+
}
|
|
5134
|
+
]
|
|
5135
|
+
},
|
|
5136
|
+
{
|
|
5137
|
+
// .qbar 轨道。用 flex 而不是 box —— box 的子节点走绝对定位、必须给 rect,
|
|
5138
|
+
// 填充条要的是「跟着父级流」;overflow: hidden 必须写,
|
|
5139
|
+
// 否则填充条的直角会戳出轨道的圆角外面
|
|
5140
|
+
type: "flex",
|
|
5141
|
+
style: {
|
|
5142
|
+
height: 3,
|
|
5143
|
+
radius: 4,
|
|
5144
|
+
background: "rgba(255,255,255,0.2)",
|
|
5145
|
+
margin: "2px 0 1px",
|
|
5146
|
+
overflow: "hidden"
|
|
5147
|
+
},
|
|
5148
|
+
children: [
|
|
5149
|
+
{
|
|
5150
|
+
// 填充条。宽度是算出来的:已用 ÷ 总额度 × 100,节点 style 里的
|
|
5151
|
+
// 字符串同样走插值,所以百分比不需要后端多下发一个字段
|
|
5152
|
+
type: "box",
|
|
5153
|
+
style: {
|
|
5154
|
+
width: "{{ (total - user.collectCount) / total * 100 }}%",
|
|
5155
|
+
height: "100%",
|
|
5156
|
+
background: "linear-gradient(90deg,#f53f3f,#ff7a45)"
|
|
5053
5157
|
}
|
|
5054
5158
|
}
|
|
5055
5159
|
]
|
|
5056
5160
|
},
|
|
5057
5161
|
{
|
|
5162
|
+
// .qn
|
|
5058
5163
|
type: "text",
|
|
5059
5164
|
content: `\u5DF2\u7528 ${USED} / {{ total }} \u6B21`,
|
|
5060
|
-
style: { fontSize: 10.5, lineHeight: 1.35, color: "#8a909c" }
|
|
5061
|
-
}
|
|
5062
|
-
]
|
|
5063
|
-
},
|
|
5064
|
-
{
|
|
5065
|
-
// 轨道。用 flex 而不是 box —— box 的子节点走绝对定位、必须给 rect,
|
|
5066
|
-
// 填充条要的是「跟着父级流」;overflow: hidden 必须写,否则填充条的
|
|
5067
|
-
// 直角会戳出轨道的圆角外面
|
|
5068
|
-
type: "flex",
|
|
5069
|
-
style: {
|
|
5070
|
-
height: 5,
|
|
5071
|
-
radius: 4,
|
|
5072
|
-
background: "#ffe0cc",
|
|
5073
|
-
overflow: "hidden"
|
|
5074
|
-
},
|
|
5075
|
-
children: [
|
|
5076
|
-
{
|
|
5077
|
-
// 填充条。宽度是算出来的:已用 ÷ 总额度 × 100,节点 style 里的
|
|
5078
|
-
// 字符串同样走插值,所以百分比不需要后端多下发一个字段
|
|
5079
|
-
type: "box",
|
|
5080
5165
|
style: {
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5166
|
+
fontSize: 9,
|
|
5167
|
+
lineHeight: 1.25,
|
|
5168
|
+
color: "rgba(255,255,255,0.6)"
|
|
5084
5169
|
}
|
|
5085
5170
|
}
|
|
5086
5171
|
]
|
|
@@ -5088,17 +5173,49 @@ var quotaLow = {
|
|
|
5088
5173
|
]
|
|
5089
5174
|
},
|
|
5090
5175
|
{
|
|
5176
|
+
// .achieve:四格并列写死(扁平对象没法 bind 遍历),flex + wrap 复刻 2×2 grid。
|
|
5177
|
+
// 第一格的数字不是统计字段,而是「总额度 − 剩余次数」现算出来的
|
|
5178
|
+
type: "flex",
|
|
5179
|
+
style: { gap: 9, wrap: true, marginTop: 14 },
|
|
5180
|
+
children: [
|
|
5181
|
+
achieveCell3("\u5DF2\u7528", USED, "\u6B21", "\u642C\u5BB6\u6B21\u6570"),
|
|
5182
|
+
achieveCell3("\u5DF2\u4E0A\u67B6", "{{ stat.move_success_count }}", "\u4E2A", "\u7D2F\u8BA1\u4E0A\u67B6\u5546\u54C1"),
|
|
5183
|
+
achieveCell3("\u65E5\u5747", "{{ stat.avg_daily_move_count }}", "\u4E2A", "\u5E73\u5747\u6BCF\u5929\u4E0A\u67B6"),
|
|
5184
|
+
achieveCell3(
|
|
5185
|
+
"\u5DF2\u8865\u9F50",
|
|
5186
|
+
"{{ stat.white_image_fill_count }}",
|
|
5187
|
+
"\u5F20",
|
|
5188
|
+
"\u767D\u5E95\u56FE \xB7 \u5408\u89C4\u53EF\u62A5\u6D3B\u52A8"
|
|
5189
|
+
)
|
|
5190
|
+
]
|
|
5191
|
+
}
|
|
5192
|
+
]
|
|
5193
|
+
},
|
|
5194
|
+
// ===== .m-body 白底 =====
|
|
5195
|
+
{
|
|
5196
|
+
type: "flex",
|
|
5197
|
+
style: { direction: "column", background: "#ffffff", padding: "22px 26px 24px" },
|
|
5198
|
+
children: [
|
|
5199
|
+
{
|
|
5200
|
+
// .m-copy-panel
|
|
5091
5201
|
type: "text",
|
|
5092
5202
|
content: "\u642C\u5BB6\u6B21\u6570\u7528\u5B8C\uFF0C\u4EA7\u54C1\u80FD\u529B\u5C06\u53D7\u9650\uFF1A",
|
|
5093
|
-
style: {
|
|
5203
|
+
style: {
|
|
5204
|
+
fontSize: 15,
|
|
5205
|
+
fontWeight: "800",
|
|
5206
|
+
lineHeight: 1.55,
|
|
5207
|
+
letterSpacing: -0.15,
|
|
5208
|
+
color: "#1f2533"
|
|
5209
|
+
}
|
|
5094
5210
|
},
|
|
5095
5211
|
{
|
|
5212
|
+
// .lose
|
|
5096
5213
|
type: "repeat",
|
|
5097
5214
|
bind: "lose",
|
|
5098
5215
|
template: loseRow3,
|
|
5099
5216
|
style: {
|
|
5100
5217
|
direction: "column",
|
|
5101
|
-
marginTop:
|
|
5218
|
+
marginTop: 14,
|
|
5102
5219
|
background: "#ffe9e6",
|
|
5103
5220
|
borderWidth: 1,
|
|
5104
5221
|
borderStyle: "solid",
|
|
@@ -5108,13 +5225,20 @@ var quotaLow = {
|
|
|
5108
5225
|
}
|
|
5109
5226
|
},
|
|
5110
5227
|
{
|
|
5228
|
+
// .tiers 的 border-top:白名单没有 borderTop,用 1px 实心分隔条代替
|
|
5229
|
+
type: "box",
|
|
5230
|
+
style: { height: 1, background: "#eceef3", marginTop: 18 }
|
|
5231
|
+
},
|
|
5232
|
+
{
|
|
5233
|
+
// .tv:lead 被 normalizeTrialPricing 置空,所以整行都在 <b> 里
|
|
5234
|
+
//(字重 800、墨色),后面跟价格口径标记 .tv-tag
|
|
5111
5235
|
type: "flex",
|
|
5112
|
-
style: { align: "center", gap: 8, marginTop: 17, marginBottom:
|
|
5236
|
+
style: { align: "center", gap: 8, marginTop: 17, marginBottom: 11 },
|
|
5113
5237
|
children: [
|
|
5114
5238
|
{
|
|
5115
5239
|
type: "text",
|
|
5116
|
-
content: "\
|
|
5117
|
-
style: { fontSize: 13.5, fontWeight: "
|
|
5240
|
+
content: "\u4E13\u5C5E\u4F18\u60E0 \xB7 \u5012\u8BA1\u65F6",
|
|
5241
|
+
style: { fontSize: 13.5, fontWeight: "800", color: "#1f2533" }
|
|
5118
5242
|
},
|
|
5119
5243
|
{
|
|
5120
5244
|
type: "text",
|
|
@@ -5131,19 +5255,27 @@ var quotaLow = {
|
|
|
5131
5255
|
}
|
|
5132
5256
|
]
|
|
5133
5257
|
},
|
|
5258
|
+
// .tcols:wide 版 gap 8
|
|
5134
5259
|
{ type: "repeat", bind: "tiers", style: { gap: 8 }, template: tierCard3 },
|
|
5135
5260
|
{
|
|
5261
|
+
// .m-cta(th-loss 主题的红橙渐变)
|
|
5136
5262
|
type: "flex",
|
|
5137
5263
|
style: {
|
|
5138
5264
|
justify: "center",
|
|
5139
|
-
align: "
|
|
5265
|
+
align: "baseline",
|
|
5140
5266
|
gap: 5,
|
|
5141
|
-
|
|
5267
|
+
padding: "13px",
|
|
5142
5268
|
radius: 11,
|
|
5143
5269
|
background: "linear-gradient(90deg,#f53f3f,#ff7a45)",
|
|
5144
|
-
marginTop:
|
|
5270
|
+
marginTop: 20,
|
|
5271
|
+
shadow: "0 8px 18px rgba(245,63,63,0.14)",
|
|
5272
|
+
transition: "transform 0.18s, box-shadow 0.18s",
|
|
5145
5273
|
cursor: "pointer"
|
|
5146
5274
|
},
|
|
5275
|
+
hoverStyle: {
|
|
5276
|
+
transform: "translateY(-1px)",
|
|
5277
|
+
shadow: "0 10px 22px rgba(245,63,63,0.2)"
|
|
5278
|
+
},
|
|
5147
5279
|
action: {
|
|
5148
5280
|
type: "sequence",
|
|
5149
5281
|
actions: [
|
|
@@ -5157,11 +5289,18 @@ var quotaLow = {
|
|
|
5157
5289
|
},
|
|
5158
5290
|
children: [
|
|
5159
5291
|
{
|
|
5292
|
+
// .m-cta .ct
|
|
5160
5293
|
type: "text",
|
|
5161
5294
|
content: "\u7EED\u6EE1\u989D\u5EA6 \xB7",
|
|
5162
|
-
style: {
|
|
5295
|
+
style: {
|
|
5296
|
+
fontSize: 14,
|
|
5297
|
+
fontWeight: "800",
|
|
5298
|
+
letterSpacing: -0.2,
|
|
5299
|
+
color: "#ffffff"
|
|
5300
|
+
}
|
|
5163
5301
|
},
|
|
5164
5302
|
{
|
|
5303
|
+
// .m-cta .cp —— demo 的 syncCTAPrice() 把它同步成「选中档位名 + 价格」
|
|
5165
5304
|
type: "text",
|
|
5166
5305
|
content: "{{ current.p }} \xA5{{ current.price }}",
|
|
5167
5306
|
style: { fontSize: 16.5, fontWeight: "800", color: "#ffffff" }
|
|
@@ -5169,13 +5308,14 @@ var quotaLow = {
|
|
|
5169
5308
|
]
|
|
5170
5309
|
},
|
|
5171
5310
|
{
|
|
5311
|
+
// .m-ghost
|
|
5172
5312
|
type: "text",
|
|
5173
5313
|
content: "\u5347\u7EA7\u6216\u67E5\u770B\u66F4\u591A\u4EA7\u54C1\u5957\u9910",
|
|
5174
5314
|
style: {
|
|
5175
|
-
fontSize: 12
|
|
5315
|
+
fontSize: 12,
|
|
5176
5316
|
color: "#8a909c",
|
|
5177
5317
|
textAlign: "center",
|
|
5178
|
-
marginTop:
|
|
5318
|
+
marginTop: 10,
|
|
5179
5319
|
cursor: "pointer"
|
|
5180
5320
|
},
|
|
5181
5321
|
action: { type: "track", event: "popup_more_plans" }
|
|
@@ -5310,10 +5450,17 @@ var imageHotspot = {
|
|
|
5310
5450
|
id: "hotspot-never",
|
|
5311
5451
|
type: "box",
|
|
5312
5452
|
// 最底部「不再提醒」,动作是关弹窗而不是跳转。
|
|
5313
|
-
//
|
|
5453
|
+
// dismissForever 写本地标记让它前端立刻不再出现,close 才是真正关掉这一层;
|
|
5454
|
+
// reason 一并上报,后端据此决定以后还下不下发
|
|
5314
5455
|
rect: ["30%", 478, "40%", 26],
|
|
5315
5456
|
style: { radius: 13, background: HOTSPOT_BG, cursor: "pointer" },
|
|
5316
|
-
action: {
|
|
5457
|
+
action: {
|
|
5458
|
+
type: "sequence",
|
|
5459
|
+
actions: [
|
|
5460
|
+
{ type: "call", name: "dismissForever" },
|
|
5461
|
+
{ type: "close", reason: "dismiss-forever" }
|
|
5462
|
+
]
|
|
5463
|
+
}
|
|
5317
5464
|
}
|
|
5318
5465
|
]
|
|
5319
5466
|
};
|
|
@@ -5393,7 +5540,9 @@ var noticeBar = {
|
|
|
5393
5540
|
type: "sequence",
|
|
5394
5541
|
actions: [
|
|
5395
5542
|
{ type: "track", event: "notice_close", params: { notice: "guide" } },
|
|
5396
|
-
|
|
5543
|
+
// 行末的 × 只是「这次关掉」,不写本地标记:下次进页面它还该出现。
|
|
5544
|
+
// 要「以后别再出现」得另放一个按钮,配 dismissForever(见 action 章节)
|
|
5545
|
+
{ type: "close", reason: "user-close" }
|
|
5397
5546
|
]
|
|
5398
5547
|
}
|
|
5399
5548
|
}
|
|
@@ -5628,7 +5777,8 @@ function checklistSection() {
|
|
|
5628
5777
|
\u6709\u4E00\u4E2A\u4E0D\u5408\u89C4\uFF0C\u6574\u4EFD\u914D\u7F6E\u5C31\u5B58\u4E0D\u4E0A
|
|
5629
5778
|
- [ ] \u6BCF\u4E2A\u89C6\u56FE\u7684 \`stage\` \u90FD\u6709 \`onShow\` \u66DD\u5149\u57CB\u70B9\u548C \`onClose\` \u5173\u95ED\u57CB\u70B9\uFF0C\`onClose\` \u7684 params \u91CC\u5E26\u4E0A \`"reason": "{{ closeReason }}"\`
|
|
5630
5779
|
- [ ] \u5173\u95ED\u6309\u94AE\u6CA1\u6709\u591A\u4F59\u7684 \`icon\`\uFF08\u9ED8\u8BA4\u7684\u5185\u7F6E\u77E2\u91CF\u56FE\u6807\u5C31\u662F\u5BF9\u7684\uFF09
|
|
5631
|
-
- [ ] \
|
|
5780
|
+
- [ ] \u6BCF\u4E2A \`call\` \u7684 \`name\` \u90FD\u662F\u5BBF\u4E3B\u5DF2\u6CE8\u518C\u7684\u65B9\u6CD5\uFF08\u5F53\u524D\u53EA\u6709 \`dismissToday\` / \`dismissForever\`\uFF09\uFF0C\u6CA1\u6709\u81EA\u5DF1\u53D1\u660E\u7684\u540D\u5B57\u2014\u2014\u5199\u4E86\u6CA1\u6CE8\u518C\u7684\u540D\u5B57\u90A3\u4E00\u6B65\u9759\u9ED8\u5931\u6548
|
|
5781
|
+
- [ ] \u914D\u4E86\u300C\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A\u300D/\u300C\u4E0D\u518D\u63D0\u793A\u300D\u7684\u8BDD\uFF1A\`call\` \u540E\u9762**\u8DDF\u7740 \`close\`**\uFF08\u8FD9\u4E24\u4E2A\u65B9\u6CD5\u53EA\u5199\u6807\u8BB0\u3001\u4E0D\u5173\u95ED\uFF0C\u6F0F\u4E86 \`close\` \u7528\u6237\u70B9\u5B8C\u5F39\u7A97\u8FD8\u5728\uFF09\uFF0C\u4E14 \`close\` \u5E26\u4E0A \`reason\`
|
|
5632
5782
|
- [ ] \u6BCF\u4E2A \`animate.name\` \u90FD\u80FD\u5728\u9876\u5C42 \`keyframes\` \u91CC\u627E\u5230\uFF1B\`easing\` \u5728\u767D\u540D\u5355\u91CC\uFF1B\u6CA1\u6709\u5B9A\u4E49\u4E86\u5374\u6CA1\u4EBA\u5F15\u7528\u7684\u5173\u952E\u5E27
|
|
5633
5783
|
- [ ] \u88C5\u9970\u6027\u56FE\u5C42\uFF08\u5149\u6655\u3001\u626B\u5149\u3001\u5149\u70B9\uFF09\u90FD\u5199\u4E86 \`"pointerEvents": "none"\`
|
|
5634
5784
|
- [ ] \u8F93\u51FA\u7684\u662F\u5408\u6CD5 JSON\uFF08\u6CA1\u6709\u591A\u4F59\u9017\u53F7\u3001\u6CA1\u6709\u6CE8\u91CA\uFF09`;
|
|
@@ -5668,8 +5818,11 @@ function actionSection() {
|
|
|
5668
5818
|
- \`setState\`\uFF1A\`{ "type": "setState", "key": "period", "value": "{{ index }}" }\` \u505A\u9009\u4E2D\u5207\u6362
|
|
5669
5819
|
- \`close\`\uFF1A\u5173\u6389\u5F53\u524D\u8FD9\u4E00\u5C42\uFF08\u53EA\u6709\u4E00\u5C42\u65F6\u5C31\u662F\u6574\u4F53\u5173\u95ED\uFF09\u3002\u6CE8\u610F\u5B83\u53EA\u662F**\u901A\u77E5\u5BBF\u4E3B\u9875\u9762**\u300C\u7528\u6237\u60F3\u5173\u4E86\u300D\uFF0C\u7531\u5BBF\u4E3B\u51B3\u5B9A\u5173\u4E0D\u5173\uFF1B\u591A\u89C6\u56FE\u65F6\u5173\u5185\u5C42\u4E0D\u4F1A\u901A\u77E5\u5BBF\u4E3B\uFF0C\u53EA\u662F\u56DE\u5230\u4E0B\u9762\u90A3\u5C42
|
|
5670
5820
|
- \`closeAll\`\uFF1A\u51E0\u5C42\u90FD\u5173\u6389\uFF0C\u4E00\u5B9A\u4F1A\u901A\u77E5\u5BBF\u4E3B
|
|
5671
|
-
- \
|
|
5672
|
-
-
|
|
5821
|
+
- \`call\`\uFF1A**\u8BA9\u5BBF\u4E3B\u53BB\u505A\u4E00\u4EF6\u5DF2\u6CE8\u518C\u7684\u4E8B**\u3002\u540D\u5B57\u53EA\u80FD\u4ECE\u5BBF\u4E3B\u6CE8\u518C\u7684\u6E05\u5355\u91CC\u9009\uFF0C\u5199\u4E86\u6CA1\u6CE8\u518C\u7684\u540D\u5B57\u90A3\u4E00\u6B65\u9759\u9ED8\u5931\u6548\uFF08\u7269\u6599\u7167\u5E38\u663E\u793A\uFF0C\u6309\u94AE\u70B9\u4E86\u6CA1\u53CD\u5E94\uFF09\uFF0C\u6240\u4EE5\u4E0D\u8981\u81EA\u5DF1\u53D1\u660E\u65B9\u6CD5\u540D
|
|
5822
|
+
- \u300C\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A\u300D/\u300C\u4E0D\u518D\u63D0\u793A\u300D\u7528\u73B0\u6210\u7684\u4E24\u4E2A\u65B9\u6CD5\uFF1A\`dismissToday\` / \`dismissForever\`\u3002**\u5B83\u4EEC\u53EA\u5199\u6807\u8BB0\u3001\u4E0D\u5173\u95ED**\uFF0C\`close\` \u5FC5\u987B\u81EA\u5DF1\u914D\u5728\u540E\u9762\uFF1A
|
|
5823
|
+
\`{ "type": "sequence", "actions": [{ "type": "call", "name": "dismissToday" }, { "type": "close", "reason": "dismiss-today" }] }\`
|
|
5824
|
+
\uFF08\u6C38\u4E45\u7248\u628A\u4E24\u5904\u5206\u522B\u6362\u6210 \`dismissForever\` \u548C \`"dismiss-forever"\`\uFF09
|
|
5825
|
+
- \u8FD9\u4E24\u4E2A\u65B9\u6CD5\u7684\u8BB0\u5F55**\u5B58\u5728\u7528\u6237\u6D4F\u89C8\u5668\u672C\u5730\u3001\u6309\u767B\u5F55\u8D26\u53F7\u9694\u79BB**\uFF0C\u6362\u8BBE\u5907 / \u6E05\u7F13\u5B58\u5C31\u5931\u6548\u2014\u2014\u662F\u300C\u5C11\u70E6\u6211\u4E00\u4E0B\u300D\u7684\u4F53\u9A8C\u4F18\u5316\uFF0C\u4E0D\u662F\u540E\u7AEF\u6C38\u4E45\u538B\u5236\u8FD9\u6761\u6295\u653E\u7684\u51ED\u636E\u3002\u6240\u4EE5 \`close\` \u7684 \`reason\` \u7167\u65E7\u8981\u5199\uFF0C\u90A3\u662F\u540E\u7AEF\u552F\u4E00\u770B\u5F97\u5230\u7684\u300C\u7528\u6237\u4E3A\u4EC0\u4E48\u5173\u300D
|
|
5673
5826
|
- \`open\`\uFF1A\u6253\u5F00\u53E6\u4E00\u4E2A\u89C6\u56FE\uFF0C\u89C1\u4E0B\u4E00\u8282
|
|
5674
5827
|
- \u4EFB\u4F55\u8282\u70B9\u52A0 \`action\` \u90FD\u80FD\u70B9\u51FB
|
|
5675
5828
|
- **\u6BCF\u4E2A\u53EF\u70B9\u51FB\u5143\u7D20\u90FD\u5E94\u8BE5\u914D \`track\`**\uFF0C\u5426\u5219\u6CA1\u6709\u6570\u636E\u53EF\u770B
|
|
@@ -5738,7 +5891,7 @@ countdown_end // \u5012\u8BA1\u65F6\u5F52\u96F6
|
|
|
5738
5891
|
] } }
|
|
5739
5892
|
\`\`\`
|
|
5740
5893
|
|
|
5741
|
-
\`close\` \u53EA\u901A\u77E5\u5BBF\u4E3B\u300C\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u300D\uFF1B\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\
|
|
5894
|
+
\`close\` \u53EA\u901A\u77E5\u5BBF\u4E3B\u300C\u8FD9\u4E00\u6B21\u5173\u4E0D\u5173\u300D\uFF1B\`reason\` \u4F1A\u539F\u6837\u4E0A\u62A5\uFF0C\u540E\u7AEF\u636E\u6B64\u5224\u65AD\u300C\u4EE5\u540E\u8FD8\u51FA\u4E0D\u51FA\u300D\u3002\u60F3\u8BA9\u5B83\u5728\u524D\u7AEF\u4E5F\u7ACB\u523B\u4E0D\u518D\u51FA\u73B0\uFF0C\u5728 \`close\` \u4E4B\u524D\u52A0\u4E00\u6761 \`{ "type": "call", "name": "dismissToday" }\`\uFF08\u6216 \`dismissForever\`\uFF09\u3002
|
|
5742
5895
|
\u6574\u6761\u53EF\u70B9 + \u884C\u672B \xD7 \u4E0D\u4F1A\u51B2\u7A81\uFF1A\u5185\u5C42\u6709\u81EA\u5DF1\u7684 \`action\` \u5C31\u4E0D\u518D\u5192\u6CE1\u7ED9\u5916\u5C42\u3002`;
|
|
5743
5896
|
}
|
|
5744
5897
|
function viewsSection() {
|