@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
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { defineComponent as K, computed as d, openBlock as i, createBlock as O, withCtx as v, createVNode as m, onMounted as ue, resolveDirective as _e, createElementBlock as n, withDirectives as de, unref as t, normalizeClass as p, createElementVNode as s, toDisplayString as l, Fragment as P, renderList as f, createCommentVNode as o, createTextVNode as G } from "vue";
|
|
2
|
+
import { L as ge, a as Pe } from "./LandingPageFAQ-CZJXvor9.js";
|
|
3
|
+
import { L as fe } from "./LandingPageSectionHeader-D_74W4My.js";
|
|
4
|
+
import { _ as R } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import "./index-D3Kp6R4z.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { Spin as me, Button as H } from "@arco-design/web-vue";
|
|
9
|
+
import { Icon as M } from "@iconify/vue";
|
|
10
|
+
import { u as ve, a as pe } from "./useSubscriptionCheckout-DNLuRGmx.js";
|
|
11
|
+
import { u as he } from "./useEnsureAuthenticated-MpHmn2co.js";
|
|
12
|
+
const ye = /* @__PURE__ */ K({
|
|
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(c) {
|
|
29
|
+
const h = [{
|
|
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
|
+
}], y = c, k = d(() => y.faqItems ?? h);
|
|
54
|
+
return (b, w) => (i(), O(ge, {
|
|
55
|
+
class: "PricingFAQ"
|
|
56
|
+
}, {
|
|
57
|
+
BlockHeader: v(() => [m(fe, {
|
|
58
|
+
title: c.title,
|
|
59
|
+
subtitle: c.subtitle
|
|
60
|
+
}, null, 8, ["title", "subtitle"])]),
|
|
61
|
+
BlockBody: v(() => [m(Pe, {
|
|
62
|
+
"active-keys": c.activeKeys,
|
|
63
|
+
"faq-items": k.value
|
|
64
|
+
}, null, 8, ["active-keys", "faq-items"])]),
|
|
65
|
+
_: 1
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
}), tt = /* @__PURE__ */ R(ye, [["__scopeId", "data-v-fcab2f05"]]), ke = {
|
|
69
|
+
class: "PricingPlans"
|
|
70
|
+
}, be = {
|
|
71
|
+
class: "PricingPlans__trialMain"
|
|
72
|
+
}, Be = {
|
|
73
|
+
class: "PricingPlans__trialCopy"
|
|
74
|
+
}, Ce = {
|
|
75
|
+
key: 0,
|
|
76
|
+
class: "PricingPlans__trialFeatures"
|
|
77
|
+
}, Ie = {
|
|
78
|
+
class: "PricingPlans__trialAction"
|
|
79
|
+
}, Le = {
|
|
80
|
+
key: 1,
|
|
81
|
+
class: "PricingPlans__toolbar"
|
|
82
|
+
}, we = {
|
|
83
|
+
key: 0,
|
|
84
|
+
class: "PricingPlans__toggle",
|
|
85
|
+
role: "tablist",
|
|
86
|
+
"aria-label": "计费周期"
|
|
87
|
+
}, qe = ["onClick"], De = {
|
|
88
|
+
key: 0,
|
|
89
|
+
class: "PricingPlans__toggleBadge"
|
|
90
|
+
}, Te = {
|
|
91
|
+
key: 1,
|
|
92
|
+
class: "PricingPlans__note"
|
|
93
|
+
}, Ae = {
|
|
94
|
+
key: 2,
|
|
95
|
+
class: "PricingPlans__grid"
|
|
96
|
+
}, Fe = {
|
|
97
|
+
class: "PricingPlans__badgeRow"
|
|
98
|
+
}, Se = {
|
|
99
|
+
class: "PricingPlans__header"
|
|
100
|
+
}, xe = {
|
|
101
|
+
class: "PricingPlans__price"
|
|
102
|
+
}, Ee = {
|
|
103
|
+
key: 0,
|
|
104
|
+
class: "PricingPlans__originalPrice"
|
|
105
|
+
}, Ne = {
|
|
106
|
+
class: "PricingPlans__amount"
|
|
107
|
+
}, Qe = {
|
|
108
|
+
class: "PricingPlans__cycle"
|
|
109
|
+
}, Ve = {
|
|
110
|
+
key: 0,
|
|
111
|
+
class: "PricingPlans__promotion"
|
|
112
|
+
}, $e = {
|
|
113
|
+
class: "PricingPlans__summary"
|
|
114
|
+
}, ze = {
|
|
115
|
+
class: "PricingPlans__featureGroups"
|
|
116
|
+
}, Ge = {
|
|
117
|
+
class: "PricingPlans__features"
|
|
118
|
+
}, He = {
|
|
119
|
+
key: 3,
|
|
120
|
+
class: "PricingPlans__empty"
|
|
121
|
+
}, Me = /* @__PURE__ */ K({
|
|
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(c) {
|
|
135
|
+
const h = c, {
|
|
136
|
+
products: y,
|
|
137
|
+
plans: k,
|
|
138
|
+
currentSubscription: b,
|
|
139
|
+
currentLoading: w,
|
|
140
|
+
listLoading: q,
|
|
141
|
+
billingInterval: j,
|
|
142
|
+
billingIntervalTabs: D,
|
|
143
|
+
setBillingInterval: J,
|
|
144
|
+
currentTrial: U,
|
|
145
|
+
isCurrentPlan: T,
|
|
146
|
+
isRecommendedPlan: A,
|
|
147
|
+
isFreePlan: W,
|
|
148
|
+
isPlanActionDisabled: X,
|
|
149
|
+
getDisplayPrice: Y,
|
|
150
|
+
getDisplayOriginalPrice: F,
|
|
151
|
+
getDisplayCycle: Z,
|
|
152
|
+
getPromotionLabel: S,
|
|
153
|
+
getBadgeLabels: ee,
|
|
154
|
+
getButtonLabel: te,
|
|
155
|
+
getPlanSummary: x,
|
|
156
|
+
getFeatureGroups: E,
|
|
157
|
+
loadCurrentSubscription: N,
|
|
158
|
+
refresh: ie
|
|
159
|
+
} = ve(h.defaultInterval), _ = d(() => {
|
|
160
|
+
var a;
|
|
161
|
+
if (!b.value)
|
|
162
|
+
for (const r of y.value) {
|
|
163
|
+
const g = r.prices.find((e) => e.type === "free");
|
|
164
|
+
if (g)
|
|
165
|
+
return {
|
|
166
|
+
...r,
|
|
167
|
+
features: (a = g.features) != null && a.length ? g.features : r.features,
|
|
168
|
+
selectedPrice: g
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}), B = d(() => k.value.filter((a) => !W(a))), Q = d(() => !!localStorage.getItem("jwtToken")), C = d(() => !!U.value), I = d(() => Q.value && w.value && !C.value), V = d(() => C.value || I.value), {
|
|
172
|
+
checkout: ne,
|
|
173
|
+
isCheckingOut: se
|
|
174
|
+
} = pe({
|
|
175
|
+
currentSubscription: b,
|
|
176
|
+
refreshCurrentSubscription: N
|
|
177
|
+
}), {
|
|
178
|
+
ensureAuthenticated: le
|
|
179
|
+
} = he();
|
|
180
|
+
function ae(a) {
|
|
181
|
+
return a === 1 ? "适合团队协作与更高频使用" : "适合个人和轻量团队使用";
|
|
182
|
+
}
|
|
183
|
+
function $(a) {
|
|
184
|
+
return E(a.features).flatMap((r) => r.items).slice(0, 3);
|
|
185
|
+
}
|
|
186
|
+
function re(a) {
|
|
187
|
+
return (a.description || x(a, 0)).replace(/^\s*\d+\s*天(?:免费)?体验[,,、\s]*/, "").replace(/^\s*免费体验[,,、\s]*/, "").trim();
|
|
188
|
+
}
|
|
189
|
+
function oe() {
|
|
190
|
+
return I.value ? "权益加载中" : C.value ? "正在体验当前权益" : "立即体验";
|
|
191
|
+
}
|
|
192
|
+
async function ce() {
|
|
193
|
+
if (!V.value) {
|
|
194
|
+
if (Q.value) {
|
|
195
|
+
await N();
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
le();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return ue(() => {
|
|
202
|
+
ie();
|
|
203
|
+
}), (a, r) => {
|
|
204
|
+
const g = _e("motion-slide-top");
|
|
205
|
+
return i(), n("section", ke, [de((i(), O(t(me), {
|
|
206
|
+
loading: t(q),
|
|
207
|
+
tip: "数据加载中",
|
|
208
|
+
class: "PricingPlans__spin"
|
|
209
|
+
}, {
|
|
210
|
+
default: v(() => [_.value ? (i(), n("article", {
|
|
211
|
+
key: 0,
|
|
212
|
+
class: p(["PricingPlans__trial", {
|
|
213
|
+
"is-current": t(T)(_.value)
|
|
214
|
+
}])
|
|
215
|
+
}, [s("div", be, [s("div", Be, [s("h2", null, l(_.value.name), 1), s("p", null, l(re(_.value)), 1), $(_.value).length ? (i(), n("ul", Ce, [(i(!0), n(P, null, f($(_.value), (e) => (i(), n("li", {
|
|
216
|
+
key: e.title
|
|
217
|
+
}, [m(t(M), {
|
|
218
|
+
icon: "mingcute:check-circle-fill",
|
|
219
|
+
class: "PricingPlans__trialFeatureIcon"
|
|
220
|
+
}), s("span", null, l(e.title), 1)]))), 128))])) : o("", !0)]), s("div", Ie, [m(t(H), {
|
|
221
|
+
size: "large",
|
|
222
|
+
class: "PricingPlans__trialButton",
|
|
223
|
+
loading: I.value,
|
|
224
|
+
disabled: V.value,
|
|
225
|
+
onClick: ce
|
|
226
|
+
}, {
|
|
227
|
+
default: v(() => [G(l(oe()), 1)]),
|
|
228
|
+
_: 1
|
|
229
|
+
}, 8, ["loading", "disabled"])])])], 2)) : o("", !0), B.value.length ? (i(), n("div", Le, [t(D).length > 1 ? (i(), n("div", we, [(i(!0), n(P, null, f(t(D), (e) => (i(), n("button", {
|
|
230
|
+
key: e.value,
|
|
231
|
+
type: "button",
|
|
232
|
+
class: p(["PricingPlans__toggleItem", {
|
|
233
|
+
"is-active": t(j) === e.value
|
|
234
|
+
}]),
|
|
235
|
+
onClick: (L) => t(J)(e.value)
|
|
236
|
+
}, [s("span", null, l(e.label), 1), e.badge ? (i(), n("span", De, l(e.badge), 1)) : o("", !0)], 10, qe))), 128))])) : o("", !0), c.note ? (i(), n("p", Te, l(c.note), 1)) : o("", !0)])) : o("", !0), B.value.length ? (i(), n("div", Ae, [(i(!0), n(P, null, f(B.value, (e, L) => (i(), n("article", {
|
|
237
|
+
key: e.id,
|
|
238
|
+
class: p(["PricingPlans__card", {
|
|
239
|
+
"is-recommended": t(A)(e),
|
|
240
|
+
"is-current": t(T)(e)
|
|
241
|
+
}])
|
|
242
|
+
}, [s("div", Fe, [(i(!0), n(P, null, f(t(ee)(e), (u) => (i(), n("span", {
|
|
243
|
+
key: u.type,
|
|
244
|
+
class: p(["PricingPlans__badge", `is-${u.type}`])
|
|
245
|
+
}, l(u.label), 3))), 128))]), s("div", Se, [s("h2", null, l(e.name), 1), s("p", null, l(e.description || ae(L)), 1)]), s("div", xe, [t(F)(e) ? (i(), n("span", Ee, " ¥" + l(t(F)(e)), 1)) : o("", !0), r[0] || (r[0] = s("span", {
|
|
246
|
+
class: "PricingPlans__currency"
|
|
247
|
+
}, "¥", -1)), s("span", Ne, l(t(Y)(e)), 1), s("span", Qe, l(t(Z)(e)), 1)]), t(S)(e) ? (i(), n("p", Ve, l(t(S)(e)), 1)) : o("", !0), s("p", $e, l(t(x)(e, L)), 1), m(t(H), {
|
|
248
|
+
long: "",
|
|
249
|
+
size: "large",
|
|
250
|
+
class: "PricingPlans__button",
|
|
251
|
+
type: t(A)(e) ? "primary" : "outline",
|
|
252
|
+
loading: t(se)(e),
|
|
253
|
+
disabled: t(X)(e),
|
|
254
|
+
onClick: (u) => t(ne)(e)
|
|
255
|
+
}, {
|
|
256
|
+
default: v(() => [G(l(t(te)(e)), 1)]),
|
|
257
|
+
_: 2
|
|
258
|
+
}, 1032, ["type", "loading", "disabled", "onClick"]), r[1] || (r[1] = s("div", {
|
|
259
|
+
class: "PricingPlans__divider"
|
|
260
|
+
}, null, -1)), s("div", ze, [(i(!0), n(P, null, f(t(E)(e.features), (u) => (i(), n("section", {
|
|
261
|
+
key: u.title,
|
|
262
|
+
class: "PricingPlans__featureGroup"
|
|
263
|
+
}, [s("h3", null, l(u.title), 1), s("ul", Ge, [(i(!0), n(P, null, f(u.items, (z) => (i(), n("li", {
|
|
264
|
+
key: z.title
|
|
265
|
+
}, [m(t(M), {
|
|
266
|
+
icon: "mingcute:check-circle-fill",
|
|
267
|
+
class: "PricingPlans__featureIcon"
|
|
268
|
+
}), s("span", null, l(z.title), 1)]))), 128))])]))), 128))])], 2))), 128))])) : !_.value && !t(q) ? (i(), n("div", He, " 当前暂无可订阅方案 ")) : o("", !0)]),
|
|
269
|
+
_: 1
|
|
270
|
+
}, 8, ["loading"])), [[g]])]);
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}), it = /* @__PURE__ */ R(Me, [["__scopeId", "data-v-8f260b66"]]);
|
|
274
|
+
export {
|
|
275
|
+
tt as P,
|
|
276
|
+
it as a
|
|
277
|
+
};
|
package/dist/composables.js
CHANGED
|
@@ -10,7 +10,7 @@ import { u as S } from "./useTableHandle-B9aFmwYM.js";
|
|
|
10
10
|
import { f as w, a as E, g as T, u as R, b as v, c as D, d as G, e as L, w as y } from "./useSEO-DU86KCMJ.js";
|
|
11
11
|
import { u as H } from "./useUploadCos-DTMIoW7p.js";
|
|
12
12
|
import { u as N } from "./useUserMenu-ClPBlvaM.js";
|
|
13
|
-
import { u as j, a as q } from "./useSubscriptionCheckout-
|
|
13
|
+
import { u as j, a as q } from "./useSubscriptionCheckout-DNLuRGmx.js";
|
|
14
14
|
export {
|
|
15
15
|
w as findActiveMenuPath,
|
|
16
16
|
E as findMenuPath,
|
package/dist/main.js
CHANGED
|
@@ -17,7 +17,7 @@ import { n as g2, h as N, U as m2, i as s2, V as L2, j as J, H as Q, k as y2, v
|
|
|
17
17
|
import { f as t4, a as o4, g as s4, u as a4, b as i4, c as n4, d as r4, e as c4, w as l4 } from "./useSEO-DU86KCMJ.js";
|
|
18
18
|
import { u as d4 } from "./useUploadCos-DTMIoW7p.js";
|
|
19
19
|
import { u as f4 } from "./useUserMenu-ClPBlvaM.js";
|
|
20
|
-
import { u as h4, a as _4 } from "./useSubscriptionCheckout-
|
|
20
|
+
import { u as h4, a as _4 } from "./useSubscriptionCheckout-DNLuRGmx.js";
|
|
21
21
|
import { A as m4, B as L4, E as y4, a as w4, b as F4, O as M4, P as k4, c as v4, _ as x4, d as H4, S as Z4, e as V4, u as E4 } from "./AuthkitAppSetting-p_ZzaAK3.js";
|
|
22
22
|
import { A as b4, a as S4, b as A4, c as G4, d as P4, e as D4, f as T4, _ as O4, g as B4, O as I4, h as $4, P as N4, i as W4, j as j4, k as R4, R as z4, S as q4, l as K4, m as J4, n as Q4, o as Y4, p as X4, q as e6 } from "./AuthkitGithubBinding-Cwly1un7.js";
|
|
23
23
|
import { u as o6 } from "./useEnsureAuthenticated-MpHmn2co.js";
|
|
@@ -37,7 +37,7 @@ import { C as J7, a as Q7 } from "./CollapseItem-DUzZA6tx.js";
|
|
|
37
37
|
import { C as X7, E as e5 } from "./CustomTable-BUkwlbzN.js";
|
|
38
38
|
import { M as o5, a as s5 } from "./Menu-Cy2ZPeaz.js";
|
|
39
39
|
import { P as i5, u as n5 } from "./PaySubscriptions-DS4kJNb_.js";
|
|
40
|
-
import { P as c5, a as l5 } from "./PricingPlans-
|
|
40
|
+
import { P as c5, a as l5 } from "./PricingPlans-D6dM3BKy.js";
|
|
41
41
|
import { R as d5 } from "./ReferrerReferees-DhS91Ulf.js";
|
|
42
42
|
import { _ as f5 } from "./Upload.vue_vue_type_script_setup_true_lang-DOHui-lA.js";
|
|
43
43
|
import { U as h5, a as _5, b as g5, c as m5, d as L5, _ as y5, e as w5, f as F5, g as M5, h as k5, i as v5, j as x5, k as H5, l as Z5, m as V5 } from "./UserMenuInvitationsItem.vue_vue_type_script_setup_true_lang-9cF5hBYc.js";
|
package/dist/pay.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { P as a, u as r } from "./PaySubscriptions-DS4kJNb_.js";
|
|
2
|
-
import { P as u, a as n } from "./PricingPlans-
|
|
3
|
-
import { u as t, a as P } from "./useSubscriptionCheckout-
|
|
2
|
+
import { P as u, a as n } from "./PricingPlans-D6dM3BKy.js";
|
|
3
|
+
import { u as t, a as P } from "./useSubscriptionCheckout-DNLuRGmx.js";
|
|
4
4
|
export {
|
|
5
5
|
a as PaySubscriptions,
|
|
6
6
|
u as PricingFAQ,
|