diff --git a/public/css/platform.css b/public/css/platform.css new file mode 100644 index 0000000..2130e75 --- /dev/null +++ b/public/css/platform.css @@ -0,0 +1,122 @@ +/* + * SaaSShop Platform (Public) Styles + * 说明:对外平台官网/套餐页的样式集中管理,避免 Blade 中大量 inline style。 + */ + +:root{ + --bg:#f6f7fb; + --text:#111827; + --muted:#6b7280; + --border:#e5e7eb; + --brand:#111827; + --card-bg:#fff; +} + +body{ + font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif; + margin:0; + background:var(--bg); + color:var(--text); +} + +.wrap{ + max-width:980px; + margin:0 auto; + padding:24px; +} + +.card{ + background:var(--card-bg); + border:1px solid var(--border); + border-radius:10px; + padding:20px; +} + +.muted{ + color:var(--muted); + font-size:14px; + line-height:1.6; +} + +.h1{ + margin:0 0 8px 0; + font-size:28px; +} + +.h3{ + margin:0 0 8px 0; + font-size:18px; +} + +.mt-8{ margin-top:8px; } +.mt-10{ margin-top:10px; } +.mt-12{ margin-top:12px; } +.mt-14{ margin-top:14px; } + +.flex{ + display:flex; + align-items:center; +} + +.flex-between{ + display:flex; + align-items:center; + justify-content:space-between; +} + +.flex-wrap{ flex-wrap:wrap; } + +.gap-10{ gap:10px; } + +.grid-2{ + display:grid; + grid-template-columns:1fr 1fr; + gap:16px; + margin-top:16px; +} + +.grid-3{ + display:grid; + grid-template-columns:repeat(3, 1fr); + gap:14px; + margin-top:16px; +} + +.btn{ + display:inline-block; + padding:10px 14px; + border-radius:8px; + border:1px solid var(--brand); + text-decoration:none; + color:var(--brand); + font-weight:600; +} + +.btn-primary{ + background:var(--brand); + color:#fff; +} + +.badge{ + display:inline-block; + font-size:12px; + padding:2px 8px; + border-radius:999px; + border:1px solid var(--border); + color:#374151; +} + +.price{ + margin-top:10px; + font-size:22px; + font-weight:700; +} + +@media (max-width: 980px){ + .grid-3{ grid-template-columns:1fr 1fr; } +} + +@media (max-width: 720px){ + .grid-2{ grid-template-columns:1fr; } + .grid-3{ grid-template-columns:1fr; } +} diff --git a/resources/views/platform/index.blade.php b/resources/views/platform/index.blade.php index e67d719..e717896 100644 --- a/resources/views/platform/index.blade.php +++ b/resources/views/platform/index.blade.php @@ -4,40 +4,27 @@ SaaSShop|SaaS 电商系统 - +
-

SaaSShop|SaaS 电商系统

+

SaaSShop|SaaS 电商系统

这是 SaaSShop 的对外介绍与开通入口(前期先做 A:站点开通型)。B(license 授权码)后续在其它端能力更完整后再接入。
-
+
-
+
-

四端结构

-
- 总台管理(平台治理/收费) → 站点后台(站点管理员) → 商家后台(商家运营) → 买家端(交易体验)。 -
+

四端结构

+
总台管理(平台治理/收费) → 站点后台(站点管理员) → 商家后台(商家运营) → 买家端(交易体验)。
-

当前优先级

-
- 先把“套餐 → 订阅 → 平台订单 → 生效/同步/治理”跑成收费闭环;对外平台先做到可介绍、可看套餐、可引导开通。 -
+

当前优先级

+
先把“套餐 → 订阅 → 平台订单 → 生效/同步/治理”跑成收费闭环;对外平台先做到可介绍、可看套餐、可引导开通。
diff --git a/resources/views/platform/plans.blade.php b/resources/views/platform/plans.blade.php index 5ea90a3..4030385 100644 --- a/resources/views/platform/plans.blade.php +++ b/resources/views/platform/plans.blade.php @@ -4,49 +4,37 @@ SaaSShop|套餐与功能 - +
-
+
-

套餐与功能

+

套餐与功能

仅展示「已发布 + 启用中」套餐。开通入口(A:站点开通型)将优先在此页面逐步接入。
- -
+
@forelse($plans as $p)
-
-

{{ $p->name }}

+
+

{{ $p->name }}

{{ $p->billing_cycle }}
-
套餐编码:{{ $p->code }}
-
¥{{ number_format((float) $p->price, 2) }}
+
套餐编码:{{ $p->code }}
+
¥{{ number_format((float) $p->price, 2) }}
@if($p->description) -
{{ $p->description }}
+
{{ $p->description }}
@endif -
+ -
提示:前期先跑通收费闭环与治理;自助开通会在后续版本接入。
+
提示:前期先跑通收费闭环与治理;自助开通会在后续版本接入。
@empty
diff --git a/tests/Feature/FrontPlatformPagesUseExternalCssTest.php b/tests/Feature/FrontPlatformPagesUseExternalCssTest.php new file mode 100644 index 0000000..a5cafd3 --- /dev/null +++ b/tests/Feature/FrontPlatformPagesUseExternalCssTest.php @@ -0,0 +1,24 @@ +get('/platform'); + $res1->assertOk(); + $res1->assertSee('', false); + $res1->assertDontSee('