feat(admin): 主题对齐春绿(Spring Green v4 · #00E070)

- 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
这个提交包含在:
linda
2026-10-15 22:14:33 +08:00
父节点 d5729e92b8
当前提交 e8b5ae6f16
共有 5 个文件被更改,包括 68 次插入 和 41 次删除

查看文件

@@ -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,