@huyooo/ui 0.11.14 → 0.11.15
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/PricingPlans-D6dM3BKy.js +277 -0
- package/dist/composables.js +1 -1
- package/dist/main.js +2 -2
- package/dist/pay.js +2 -2
- package/dist/style.css +1 -1
- package/dist/{useSubscriptionCheckout-Dv8Rq5jU.js → useSubscriptionCheckout-DNLuRGmx.js} +1 -1
- package/package.json +1 -1
- package/dist/PricingPlans-v8ZL2XaL.js +0 -266
package/package.json
CHANGED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { defineComponent as V, computed as B, openBlock as i, createBlock as $, withCtx as f, createVNode as m, onMounted as ne, resolveDirective as le, createElementBlock as s, withDirectives as ae, unref as t, normalizeClass as p, createElementVNode as n, toDisplayString as l, Fragment as P, renderList as g, createCommentVNode as c, createTextVNode as N } from "vue";
|
|
2
|
-
import { L as re, a as ce } from "./LandingPageFAQ-CZJXvor9.js";
|
|
3
|
-
import { L as oe } from "./LandingPageSectionHeader-D_74W4My.js";
|
|
4
|
-
import { _ as z } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
5
|
-
/* empty css */
|
|
6
|
-
import "./index-D3Kp6R4z.js";
|
|
7
|
-
/* empty css */
|
|
8
|
-
import { Spin as ue, Button as E } from "@arco-design/web-vue";
|
|
9
|
-
import { Icon as Q } from "@iconify/vue";
|
|
10
|
-
import { u as _e, a as de } from "./useSubscriptionCheckout-Dv8Rq5jU.js";
|
|
11
|
-
import { u as Pe } from "./useEnsureAuthenticated-MpHmn2co.js";
|
|
12
|
-
const ge = /* @__PURE__ */ V({
|
|
13
|
-
__name: "PricingFAQ",
|
|
14
|
-
props: {
|
|
15
|
-
title: {
|
|
16
|
-
default: "订阅常见问题"
|
|
17
|
-
},
|
|
18
|
-
subtitle: {
|
|
19
|
-
default: "关于试用、付款、配额、升级和取消订阅的说明。"
|
|
20
|
-
},
|
|
21
|
-
activeKeys: {
|
|
22
|
-
default: () => []
|
|
23
|
-
},
|
|
24
|
-
faqItems: {
|
|
25
|
-
default: void 0
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
setup(o) {
|
|
29
|
-
const v = [{
|
|
30
|
-
question: "可以先试用再付费吗?",
|
|
31
|
-
answer: "可以。支持试用的方案会在卡片按钮上标明试用天数。试用期间可使用对应方案能力,到期后再决定是否继续订阅。"
|
|
32
|
-
}, {
|
|
33
|
-
question: "月付和年付有什么区别?",
|
|
34
|
-
answer: "月付适合短期验证和灵活使用,年付适合稳定团队和长期项目,通常会有更优惠的价格。"
|
|
35
|
-
}, {
|
|
36
|
-
question: "已有订阅后可以升级或切换方案吗?",
|
|
37
|
-
answer: "可以。升级或切换方案时,系统会根据当前订阅和新方案计算差额;如需补差价,会跳转到支付页面完成支付。"
|
|
38
|
-
}, {
|
|
39
|
-
question: "取消订阅后还能继续使用吗?",
|
|
40
|
-
answer: "可以。取消订阅后,当前计费周期内仍可继续使用,周期结束后订阅权益将停止续期。"
|
|
41
|
-
}, {
|
|
42
|
-
question: "配额什么时候重置?",
|
|
43
|
-
answer: "配额按订阅周期重置,不一定是自然月月初。例如您在 4 月 15 日订阅月付方案,下一次配额重置通常发生在 5 月 15 日。"
|
|
44
|
-
}, {
|
|
45
|
-
question: "不同方案的技术支持有什么区别?",
|
|
46
|
-
answer: "基础方案适合个人和轻量团队,包含常规支持;更高等级方案面向正式团队和生产场景,通常包含更高优先级支持。"
|
|
47
|
-
}, {
|
|
48
|
-
question: "是否支持退款?",
|
|
49
|
-
answer: "订阅可随时取消。退款规则以付费服务协议为准,如遇到重复扣费或异常支付,可以联系支持团队处理。"
|
|
50
|
-
}, {
|
|
51
|
-
question: "使用订阅服务有什么限制?",
|
|
52
|
-
answer: "请按正常业务场景使用服务,禁止共享、转售订阅或用于违法违规场景。严重滥用可能导致服务受限或账户终止。"
|
|
53
|
-
}], h = o, y = B(() => h.faqItems ?? v);
|
|
54
|
-
return (I, k) => (i(), $(re, {
|
|
55
|
-
class: "PricingFAQ"
|
|
56
|
-
}, {
|
|
57
|
-
BlockHeader: f(() => [m(oe, {
|
|
58
|
-
title: o.title,
|
|
59
|
-
subtitle: o.subtitle
|
|
60
|
-
}, null, 8, ["title", "subtitle"])]),
|
|
61
|
-
BlockBody: f(() => [m(ce, {
|
|
62
|
-
"active-keys": o.activeKeys,
|
|
63
|
-
"faq-items": y.value
|
|
64
|
-
}, null, 8, ["active-keys", "faq-items"])]),
|
|
65
|
-
_: 1
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
}), Ue = /* @__PURE__ */ z(ge, [["__scopeId", "data-v-fcab2f05"]]), me = {
|
|
69
|
-
class: "PricingPlans"
|
|
70
|
-
}, fe = {
|
|
71
|
-
class: "PricingPlans__trialMain"
|
|
72
|
-
}, pe = {
|
|
73
|
-
class: "PricingPlans__trialCopy"
|
|
74
|
-
}, ve = {
|
|
75
|
-
key: 0,
|
|
76
|
-
class: "PricingPlans__trialFeatures"
|
|
77
|
-
}, he = {
|
|
78
|
-
class: "PricingPlans__trialAction"
|
|
79
|
-
}, ye = {
|
|
80
|
-
key: 1,
|
|
81
|
-
class: "PricingPlans__toolbar"
|
|
82
|
-
}, ke = {
|
|
83
|
-
key: 0,
|
|
84
|
-
class: "PricingPlans__toggle",
|
|
85
|
-
role: "tablist",
|
|
86
|
-
"aria-label": "计费周期"
|
|
87
|
-
}, be = ["onClick"], Ce = {
|
|
88
|
-
key: 0,
|
|
89
|
-
class: "PricingPlans__toggleBadge"
|
|
90
|
-
}, Be = {
|
|
91
|
-
key: 1,
|
|
92
|
-
class: "PricingPlans__note"
|
|
93
|
-
}, Ie = {
|
|
94
|
-
key: 2,
|
|
95
|
-
class: "PricingPlans__grid"
|
|
96
|
-
}, qe = {
|
|
97
|
-
class: "PricingPlans__badgeRow"
|
|
98
|
-
}, Le = {
|
|
99
|
-
class: "PricingPlans__header"
|
|
100
|
-
}, we = {
|
|
101
|
-
class: "PricingPlans__price"
|
|
102
|
-
}, De = {
|
|
103
|
-
key: 0,
|
|
104
|
-
class: "PricingPlans__originalPrice"
|
|
105
|
-
}, Fe = {
|
|
106
|
-
class: "PricingPlans__amount"
|
|
107
|
-
}, Ae = {
|
|
108
|
-
class: "PricingPlans__cycle"
|
|
109
|
-
}, Se = {
|
|
110
|
-
key: 0,
|
|
111
|
-
class: "PricingPlans__promotion"
|
|
112
|
-
}, Te = {
|
|
113
|
-
class: "PricingPlans__summary"
|
|
114
|
-
}, xe = {
|
|
115
|
-
class: "PricingPlans__featureGroups"
|
|
116
|
-
}, Ne = {
|
|
117
|
-
class: "PricingPlans__features"
|
|
118
|
-
}, Ee = {
|
|
119
|
-
key: 3,
|
|
120
|
-
class: "PricingPlans__empty"
|
|
121
|
-
}, Qe = /* @__PURE__ */ V({
|
|
122
|
-
__name: "PricingPlans",
|
|
123
|
-
props: {
|
|
124
|
-
appName: {
|
|
125
|
-
default: "Huyooo"
|
|
126
|
-
},
|
|
127
|
-
defaultInterval: {
|
|
128
|
-
default: "month"
|
|
129
|
-
},
|
|
130
|
-
note: {
|
|
131
|
-
default: ""
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
setup(o) {
|
|
135
|
-
const v = o, {
|
|
136
|
-
products: h,
|
|
137
|
-
plans: y,
|
|
138
|
-
currentSubscription: I,
|
|
139
|
-
listLoading: k,
|
|
140
|
-
billingInterval: G,
|
|
141
|
-
billingIntervalTabs: q,
|
|
142
|
-
setBillingInterval: H,
|
|
143
|
-
isCurrentPlan: L,
|
|
144
|
-
isRecommendedPlan: w,
|
|
145
|
-
isFreePlan: M,
|
|
146
|
-
isPlanActionDisabled: K,
|
|
147
|
-
getDisplayPrice: O,
|
|
148
|
-
getDisplayOriginalPrice: D,
|
|
149
|
-
getDisplayCycle: R,
|
|
150
|
-
getPromotionLabel: F,
|
|
151
|
-
getBadgeLabels: j,
|
|
152
|
-
getButtonLabel: J,
|
|
153
|
-
getPlanSummary: A,
|
|
154
|
-
getFeatureGroups: S,
|
|
155
|
-
loadCurrentSubscription: U,
|
|
156
|
-
refresh: W
|
|
157
|
-
} = _e(v.defaultInterval), _ = B(() => {
|
|
158
|
-
var a;
|
|
159
|
-
for (const r of h.value) {
|
|
160
|
-
const d = r.prices.find((e) => e.type === "free");
|
|
161
|
-
if (d)
|
|
162
|
-
return {
|
|
163
|
-
...r,
|
|
164
|
-
features: (a = d.features) != null && a.length ? d.features : r.features,
|
|
165
|
-
selectedPrice: d
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
}), b = B(() => y.value.filter((a) => !M(a))), {
|
|
169
|
-
checkout: X,
|
|
170
|
-
isCheckingOut: Y
|
|
171
|
-
} = de({
|
|
172
|
-
currentSubscription: I,
|
|
173
|
-
refreshCurrentSubscription: U
|
|
174
|
-
}), {
|
|
175
|
-
ensureAuthenticated: Z
|
|
176
|
-
} = Pe();
|
|
177
|
-
function ee(a) {
|
|
178
|
-
return a === 1 ? "适合团队协作与更高频使用" : "适合个人和轻量团队使用";
|
|
179
|
-
}
|
|
180
|
-
function T(a) {
|
|
181
|
-
return S(a.features).flatMap((r) => r.items).slice(0, 3);
|
|
182
|
-
}
|
|
183
|
-
function te(a) {
|
|
184
|
-
return (a.description || A(a, 0)).replace(/^\s*\d+\s*天(?:免费)?体验[,,、\s]*/, "").replace(/^\s*免费体验[,,、\s]*/, "").trim();
|
|
185
|
-
}
|
|
186
|
-
function ie() {
|
|
187
|
-
return "立即体验";
|
|
188
|
-
}
|
|
189
|
-
function se() {
|
|
190
|
-
Z();
|
|
191
|
-
}
|
|
192
|
-
return ne(() => {
|
|
193
|
-
W();
|
|
194
|
-
}), (a, r) => {
|
|
195
|
-
const d = le("motion-slide-top");
|
|
196
|
-
return i(), s("section", me, [ae((i(), $(t(ue), {
|
|
197
|
-
loading: t(k),
|
|
198
|
-
tip: "数据加载中",
|
|
199
|
-
class: "PricingPlans__spin"
|
|
200
|
-
}, {
|
|
201
|
-
default: f(() => [_.value ? (i(), s("article", {
|
|
202
|
-
key: 0,
|
|
203
|
-
class: p(["PricingPlans__trial", {
|
|
204
|
-
"is-current": t(L)(_.value)
|
|
205
|
-
}])
|
|
206
|
-
}, [n("div", fe, [n("div", pe, [n("h2", null, l(_.value.name), 1), n("p", null, l(te(_.value)), 1), T(_.value).length ? (i(), s("ul", ve, [(i(!0), s(P, null, g(T(_.value), (e) => (i(), s("li", {
|
|
207
|
-
key: e.title
|
|
208
|
-
}, [m(t(Q), {
|
|
209
|
-
icon: "mingcute:check-circle-fill",
|
|
210
|
-
class: "PricingPlans__trialFeatureIcon"
|
|
211
|
-
}), n("span", null, l(e.title), 1)]))), 128))])) : c("", !0)]), n("div", he, [m(t(E), {
|
|
212
|
-
size: "large",
|
|
213
|
-
class: "PricingPlans__trialButton",
|
|
214
|
-
onClick: se
|
|
215
|
-
}, {
|
|
216
|
-
default: f(() => [N(l(ie()), 1)]),
|
|
217
|
-
_: 1
|
|
218
|
-
})])])], 2)) : c("", !0), b.value.length ? (i(), s("div", ye, [t(q).length > 1 ? (i(), s("div", ke, [(i(!0), s(P, null, g(t(q), (e) => (i(), s("button", {
|
|
219
|
-
key: e.value,
|
|
220
|
-
type: "button",
|
|
221
|
-
class: p(["PricingPlans__toggleItem", {
|
|
222
|
-
"is-active": t(G) === e.value
|
|
223
|
-
}]),
|
|
224
|
-
onClick: (C) => t(H)(e.value)
|
|
225
|
-
}, [n("span", null, l(e.label), 1), e.badge ? (i(), s("span", Ce, l(e.badge), 1)) : c("", !0)], 10, be))), 128))])) : c("", !0), o.note ? (i(), s("p", Be, l(o.note), 1)) : c("", !0)])) : c("", !0), b.value.length ? (i(), s("div", Ie, [(i(!0), s(P, null, g(b.value, (e, C) => (i(), s("article", {
|
|
226
|
-
key: e.id,
|
|
227
|
-
class: p(["PricingPlans__card", {
|
|
228
|
-
"is-recommended": t(w)(e),
|
|
229
|
-
"is-current": t(L)(e)
|
|
230
|
-
}])
|
|
231
|
-
}, [n("div", qe, [(i(!0), s(P, null, g(t(j)(e), (u) => (i(), s("span", {
|
|
232
|
-
key: u.type,
|
|
233
|
-
class: p(["PricingPlans__badge", `is-${u.type}`])
|
|
234
|
-
}, l(u.label), 3))), 128))]), n("div", Le, [n("h2", null, l(e.name), 1), n("p", null, l(e.description || ee(C)), 1)]), n("div", we, [t(D)(e) ? (i(), s("span", De, " ¥" + l(t(D)(e)), 1)) : c("", !0), r[0] || (r[0] = n("span", {
|
|
235
|
-
class: "PricingPlans__currency"
|
|
236
|
-
}, "¥", -1)), n("span", Fe, l(t(O)(e)), 1), n("span", Ae, l(t(R)(e)), 1)]), t(F)(e) ? (i(), s("p", Se, l(t(F)(e)), 1)) : c("", !0), n("p", Te, l(t(A)(e, C)), 1), m(t(E), {
|
|
237
|
-
long: "",
|
|
238
|
-
size: "large",
|
|
239
|
-
class: "PricingPlans__button",
|
|
240
|
-
type: t(w)(e) ? "primary" : "outline",
|
|
241
|
-
loading: t(Y)(e),
|
|
242
|
-
disabled: t(K)(e),
|
|
243
|
-
onClick: (u) => t(X)(e)
|
|
244
|
-
}, {
|
|
245
|
-
default: f(() => [N(l(t(J)(e)), 1)]),
|
|
246
|
-
_: 2
|
|
247
|
-
}, 1032, ["type", "loading", "disabled", "onClick"]), r[1] || (r[1] = n("div", {
|
|
248
|
-
class: "PricingPlans__divider"
|
|
249
|
-
}, null, -1)), n("div", xe, [(i(!0), s(P, null, g(t(S)(e.features), (u) => (i(), s("section", {
|
|
250
|
-
key: u.title,
|
|
251
|
-
class: "PricingPlans__featureGroup"
|
|
252
|
-
}, [n("h3", null, l(u.title), 1), n("ul", Ne, [(i(!0), s(P, null, g(u.items, (x) => (i(), s("li", {
|
|
253
|
-
key: x.title
|
|
254
|
-
}, [m(t(Q), {
|
|
255
|
-
icon: "mingcute:check-circle-fill",
|
|
256
|
-
class: "PricingPlans__featureIcon"
|
|
257
|
-
}), n("span", null, l(x.title), 1)]))), 128))])]))), 128))])], 2))), 128))])) : !_.value && !t(k) ? (i(), s("div", Ee, " 当前暂无可订阅方案 ")) : c("", !0)]),
|
|
258
|
-
_: 1
|
|
259
|
-
}, 8, ["loading"])), [[d]])]);
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
}), We = /* @__PURE__ */ z(Qe, [["__scopeId", "data-v-da05021f"]]);
|
|
263
|
-
export {
|
|
264
|
-
Ue as P,
|
|
265
|
-
We as a
|
|
266
|
-
};
|