From e8b5ae6f16cdcf389799e89245855de1dce5e7f5 Mon Sep 17 00:00:00 2001 From: linda Date: Thu, 15 Oct 2026 22:14:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E4=B8=BB=E9=A2=98=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=E6=98=A5=E7=BB=BF=EF=BC=88Spring=20Green=20v4=20?= =?UTF-8?q?=C2=B7=20#00E070=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FcInstall:BANNERS 种子改 105deg 亮绿→深绿(与小程序 common/mock/data.js 逐字对齐) - FcInstall:幂等升级新增 LEGACY_COLOR_KEYS,可识别「旧暖橙 + v1.2 生态绿」两种历史底色并覆盖为春绿, 已是春绿渐变或运营自定义标题的轮播自动跳过(老库执行 php think fc:install 即可,无需 --reset) - 轮播表单:占位示例与帮助文案改春绿 105deg,并注明小程序侧文字为墨绿字 - 登录页:品牌色改春绿(--brand 白底可读 #04874A / --brand-bright #00E070 只做按钮面 + 墨绿字), 品牌栏深绿渐变与光晕同步 - docs/05:fc_banner.color 取值约定与 §7.6 升级规则同步 v1.3.0 --- application/admin/command/FcInstall.php | 56 +++++++++++++++------- application/admin/view/fc/banner/add.html | 6 +-- application/admin/view/fc/banner/edit.html | 6 +-- application/admin/view/index/login.html | 22 +++++---- docs/05-后端实现规范.md | 19 ++++---- 5 files changed, 68 insertions(+), 41 deletions(-) diff --git a/application/admin/command/FcInstall.php b/application/admin/command/FcInstall.php index 049ac95..8f0fd08 100644 --- a/application/admin/command/FcInstall.php +++ b/application/admin/command/FcInstall.php @@ -12,7 +12,7 @@ use think\Db; * 同城分类信息 · 业务表安装器 * * 用法: - * php think fc:install 建表 + 首次注入种子数据(已存在则跳过种子)+ 轮播底色与生态绿主题对齐 + * php think fc:install 建表 + 首次注入种子数据(已存在则跳过种子)+ 轮播底色与春绿主题对齐 * php think fc:install --reset 建表 + 强制重置种子数据 * * 说明:全部使用 CREATE TABLE IF NOT EXISTS,幂等安全,不影响 FastAdmin 原有表。 @@ -22,13 +22,24 @@ class FcInstall extends Command { /** * 内置轮播(标题 / 跳转 / 底色)——种子数据与「底色升级」共用同一份定义。 - * color 取前端 uni.scss 的生态绿渐变家族:绿 = 平台与内容; - * image 留空时小程序用「绿底 + 白色插画」内置配图渲染。 + * color 取前端 uni.scss 的春绿主题(v4):105deg 亮绿(左)→ 深绿(右), + * 文字区落在亮绿端(小程序用墨绿字 #04301E),白色插画落在右侧深绿端; + * image 留空时小程序用「亮绿底 + 墨绿字 + 白色插画」内置配图渲染。 */ const BANNERS = [ - ['同城好物节 · 二手直降', '/pages/post/list?categoryId=3', 'linear-gradient(135deg, #18a587 0%, #0e7c66 55%, #0a5d4d 100%)'], - ['招聘旺季 · 免费发布', '/pages/post/create', 'linear-gradient(135deg, #0e7c66 0%, #0a5d4d 55%, #04302a 100%)'], - ['本地服务 · 上门更省心', '/pages/post/list?categoryId=5', 'linear-gradient(135deg, #16897f 0%, #0e6b62 55%, #07443e 100%)'], + ['同城好物节 · 二手直降', '/pages/post/list?categoryId=3', 'linear-gradient(105deg, #00e070 0%, #00c860 42%, #046b3b 100%)'], + ['招聘旺季 · 免费发布', '/pages/post/create', 'linear-gradient(105deg, #00d96c 0%, #00b85c 40%, #023a21 100%)'], + ['本地服务 · 上门更省心', '/pages/post/list?categoryId=5', 'linear-gradient(105deg, #00e878 0%, #049e52 45%, #045c34 100%)'], + ]; + + /** + * 需要被主题升级覆盖的历史底色特征: + * ① 旧暖橙纯色(#FF8A5B 一族);② v1.2 生态绿(#0e7c66 一族); + * 命中任一即按标题覆盖为上面的春绿渐变(只动 color 字段,不动业务数据)。 + */ + const LEGACY_COLOR_KEYS = [ + '18a587', '0e7c66', '0a5d4d', '04302a', '16897f', '0e6b62', '07443e', + 'ff8a5b', 'ffb86b', 'ff6f61', ]; protected function configure() @@ -63,7 +74,7 @@ class FcInstall extends Command $output->writeln('==> 已有数据,跳过种子(如需重置请加 --reset)'); } - $output->writeln('==> 轮播底色与生态绿主题对齐'); + $output->writeln('==> 轮播底色与春绿主题对齐'); $this->upgradeBanners($output); $output->writeln('==> 初始化后台菜单'); @@ -75,10 +86,11 @@ class FcInstall extends Command /** * 轮播底色升级(幂等,可重复执行) * - * v1.2 起主题改为生态绿,旧版种子里的轮播底色是暖橙纯色(#FF8A5B / #FFB86B / #FF6F61)。 - * 线上库若还是旧值,这里按「标题」精确匹配把内置 3 条轮播的底色覆盖为生态绿渐变; + * 主题迭代史:v1.0.x 暖橙纯色(#FF8A5B 一族)→ v1.2 生态绿(#0e7c66 一族)→ v1.3 春绿(本次)。 + * 线上库若还是历史值,这里按「标题」精确匹配把内置 3 条轮播的底色覆盖为春绿渐变; * 只动 color 字段,不新增/删除记录,也不影响发布、订单等业务数据。 - * 自定义过标题或已填渐变(linear-gradient(...))的轮播不会被改动。 + * 判定规则:color 为空/非渐变(旧纯色),或命中 LEGACY_COLOR_KEYS(上一版主题色)→ 覆盖; + * 自定义过标题、或已是春绿渐变(#00e070 一族)的轮播不会被改动(幂等)。 */ private function upgradeBanners(Output $output) { @@ -90,23 +102,35 @@ class FcInstall extends Command $type = isset($row['Type']) ? (string)$row['Type'] : (isset($row['type']) ? (string)$row['type'] : ''); if (preg_match('/^varchar\((\d+)\)$/i', $type, $m) && (int)$m[1] < 255) { Db::execute("ALTER TABLE `{$table}` MODIFY COLUMN `color` varchar(255) NOT NULL DEFAULT ''" - . " COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置生态绿渐变'"); + . " COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置春绿渐变'"); $output->writeln(' - 轮播底色列 color 已由 ' . $type . ' 扩容为 varchar(255)(存 CSS 渐变)'); } - // ② 旧暖色纯色 → 生态绿渐变 + // ② 历史底色(旧纯色 / 上一版生态绿)→ 春绿渐变 $upgraded = 0; foreach (self::BANNERS as $b) { $row = Db::name('fc_banner')->where('title', $b[0])->find(); - if ($row && strpos((string)$row['color'], 'gradient(') === false) { + if (!$row) { + continue; + } + $color = strtolower((string)$row['color']); + $isGradient = strpos($color, 'gradient(') !== false; + $isLegacy = false; + foreach (self::LEGACY_COLOR_KEYS as $k) { + if (strpos($color, $k) !== false) { + $isLegacy = true; + break; + } + } + if (!$isGradient || $isLegacy) { Db::name('fc_banner')->where('id', $row['id']) ->update(['color' => $b[2], 'updatetime' => time()]); $upgraded++; } } $output->writeln($upgraded - ? ' - 已把 ' . $upgraded . ' 条旧纯色轮播底色升级为生态绿渐变' - : ' - 轮播底色已是渐变或非内置轮播,无需处理'); + ? ' - 已把 ' . $upgraded . ' 条内置轮播底色升级为春绿渐变(105deg 亮绿→深绿)' + : ' - 轮播底色已是春绿渐变或非内置轮播,无需处理'); } /** @@ -250,7 +274,7 @@ class FcInstall extends Command `title` varchar(64) NOT NULL DEFAULT '', `image` varchar(255) NOT NULL DEFAULT '' COMMENT '图片,空则用渐变占位', `link` varchar(255) NOT NULL DEFAULT '' COMMENT '跳转路径', - `color` varchar(255) NOT NULL DEFAULT '' COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置生态绿渐变', + `color` varchar(255) NOT NULL DEFAULT '' COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置春绿渐变', `sort` int(10) NOT NULL DEFAULT '0', `enabled` tinyint(1) NOT NULL DEFAULT '1', `createtime` int(10) DEFAULT NULL, diff --git a/application/admin/view/fc/banner/add.html b/application/admin/view/fc/banner/add.html index 19f3914..22b21d2 100644 --- a/application/admin/view/fc/banner/add.html +++ b/application/admin/view/fc/banner/add.html @@ -10,7 +10,7 @@
- 留空时小程序用内置白色插画(生态绿渐变底 + 圆环大徽章)渲染;填了图则铺满整张卡面并隐藏装饰层。 + 留空时小程序用内置白色插画(春绿渐变底 + 圆环大徽章,文字为墨绿字)渲染;填了图则铺满整张卡面并隐藏装饰层。
@@ -22,8 +22,8 @@
- - 填 CSS 渐变(生态绿家族,纯色请写成同色双色标,如 linear-gradient(135deg, #0E7C66 0%, #0E7C66 100%));留空或填纯色时小程序会回落到内置生态绿渐变。 + + 填 CSS 渐变(春绿家族;纯色请写成同色双色标,如 linear-gradient(105deg, #00E070 0%, #00E070 100%));留空或填纯色时小程序会回落到内置春绿渐变。建议方向 105deg(亮绿在左,深绿在右),文字区落在左侧亮绿端更清晰。
diff --git a/application/admin/view/fc/banner/edit.html b/application/admin/view/fc/banner/edit.html index 7f555e1..5e4b6a3 100644 --- a/application/admin/view/fc/banner/edit.html +++ b/application/admin/view/fc/banner/edit.html @@ -10,7 +10,7 @@
- 留空时小程序用内置白色插画(生态绿渐变底 + 圆环大徽章)渲染;填了图则铺满整张卡面并隐藏装饰层。 + 留空时小程序用内置白色插画(春绿渐变底 + 圆环大徽章,文字为墨绿字)渲染;填了图则铺满整张卡面并隐藏装饰层。
@@ -22,8 +22,8 @@
- - 填 CSS 渐变(生态绿家族,纯色请写成同色双色标,如 linear-gradient(135deg, #0E7C66 0%, #0E7C66 100%));留空或填纯色时小程序会回落到内置生态绿渐变。 + + 填 CSS 渐变(春绿家族;纯色请写成同色双色标,如 linear-gradient(105deg, #00E070 0%, #00E070 100%));留空或填纯色时小程序会回落到内置春绿渐变。建议方向 105deg(亮绿在左,深绿在右),文字区落在左侧亮绿端更清晰。
diff --git a/application/admin/view/index/login.html b/application/admin/view/index/login.html index 9da0e94..a2003e8 100755 --- a/application/admin/view/index/login.html +++ b/application/admin/view/index/login.html @@ -5,9 +5,11 @@ 山间小仓 · 同城分类信息平台 — 后台登录