brand: 替换品牌名称为嘉驰英才,使用新Logo

- 登录页/注册页/忘记密码/员工端登录:品牌名改为嘉驰英才
- 登录页公司全称:嘉驰英才(上海)信息科技有限公司
- Logo组件改为使用 JClog.png 图片
- 全局替换所有"安职通"为"嘉驰英才"

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
selfrelease
2026-08-17 10:56:10 +08:00
parent 6919f997c6
commit 99aa6d6998
12 changed files with 25 additions and 31 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

+2 -2
View File
@@ -296,7 +296,7 @@ const categories: HelpCategory[] = [
{ {
id: 'system-intro', id: 'system-intro',
question: '本系统能帮企业做什么?', question: '本系统能帮企业做什么?',
answer: '「安职通」是一站式人力资源管理平台,覆盖员工全生命周期管理,帮助企业高效管理人事业务的同时确保合规运营:\n• 员工管理:入职登记、合同签订、转正调岗、离职解聘\n• 薪税管理:工资计算、个税申报、社保公积金缴纳\n• 考勤管理:排班打卡、加班统计、休假记录、月度报表\n• 合同管理:电子合同、到期提醒、续签流程\n• 风险管控:自动扫描法律风险、合规预警、判赔预测\n• AI 助手:劳动法咨询、智能问答、文档生成', answer: '「嘉驰英才」是一站式人力资源管理平台,覆盖员工全生命周期管理,帮助企业高效管理人事业务的同时确保合规运营:\n• 员工管理:入职登记、合同签订、转正调岗、离职解聘\n• 薪税管理:工资计算、个税申报、社保公积金缴纳\n• 考勤管理:排班打卡、加班统计、休假记录、月度报表\n• 合同管理:电子合同、到期提醒、续签流程\n• 风险管控:自动扫描法律风险、合规预警、判赔预测\n• AI 助手:劳动法咨询、智能问答、文档生成',
}, },
{ {
id: 'compliance', id: 'compliance',
@@ -330,7 +330,7 @@ const categories: HelpCategory[] = [
articles: [ articles: [
{ {
id: 'what-is', id: 'what-is',
question: '「安职通」是什么?', question: '「嘉驰英才」是什么?',
answer: '这是一个帮您管理员工、合同、工资和社保的工具。您可以把它理解为一个「人事小助手」,帮您把繁琐的人事工作变得简单。比如:记录员工信息、提醒合同到期、计算工资社保、生成法律文档等。', answer: '这是一个帮您管理员工、合同、工资和社保的工具。您可以把它理解为一个「人事小助手」,帮您把繁琐的人事工作变得简单。比如:记录员工信息、提醒合同到期、计算工资社保、生成法律文档等。',
}, },
{ {
+1 -1
View File
@@ -95,7 +95,7 @@ export default function OnboardingGuide() {
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black/40"> <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/40">
<div className="bg-white rounded-xl shadow-xl max-w-lg w-full mx-4 overflow-hidden"> <div className="bg-white rounded-xl shadow-xl max-w-lg w-full mx-4 overflow-hidden">
<div className="flex items-center justify-between px-5 py-3 border-b border-gray-100"> <div className="flex items-center justify-between px-5 py-3 border-b border-gray-100">
<h2 className="text-base font-semibold">使</h2> <h2 className="text-base font-semibold">使</h2>
<button onClick={close} className="text-gray-400 hover:text-gray-600"> <button onClick={close} className="text-gray-400 hover:text-gray-600">
<X className="w-5 h-5" /> <X className="w-5 h-5" />
</button> </button>
@@ -35,8 +35,8 @@ export default function PortalLayout({ children }: { children: React.ReactNode }
<header className="sticky top-0 z-30 bg-white border-b border-gray-200 pt-safe"> <header className="sticky top-0 z-30 bg-white border-b border-gray-200 pt-safe">
<div className="max-w-md mx-auto h-14 flex items-center justify-between px-4"> <div className="max-w-md mx-auto h-14 flex items-center justify-between px-4">
<div className="flex items-center gap-2 min-w-0"> <div className="flex items-center gap-2 min-w-0">
<Logo className="w-6 h-6 text-primary flex-shrink-0" /> <Logo className="w-6 h-6 object-contain flex-shrink-0" />
<span className="text-sm font-bold text-gray-900 truncate"></span> <span className="text-sm font-bold text-gray-900 truncate"></span>
</div> </div>
<div className="flex items-center gap-2 flex-shrink-0"> <div className="flex items-center gap-2 flex-shrink-0">
{employee.name && ( {employee.name && (
@@ -151,7 +151,7 @@ export default function SidebarNav({ mobileOpen, onClose }: { mobileOpen: boolea
> >
{/* Logo 区 */} {/* Logo 区 */}
<div className="h-14 flex items-center gap-2 px-4 border-b border-gray-200 shrink-0"> <div className="h-14 flex items-center gap-2 px-4 border-b border-gray-200 shrink-0">
<Logo className="w-5 h-5 text-primary" /> <Logo className="w-5 h-5 object-contain" />
<span className="font-bold text-sm text-gray-900 truncate">{orgData?.name || ''}</span> <span className="font-bold text-sm text-gray-900 truncate">{orgData?.name || ''}</span>
</div> </div>
+2 -8
View File
@@ -1,5 +1,5 @@
/** /**
* 应用 Logo 图标 — 与 favicon.svg 保持一致 * 应用 Logo — 嘉驰英才品牌图标
*/ */
interface LogoProps { interface LogoProps {
@@ -8,12 +8,6 @@ interface LogoProps {
export default function Logo({ className = 'w-5 h-5' }: LogoProps) { export default function Logo({ className = 'w-5 h-5' }: LogoProps) {
return ( return (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className={className} fill="none"> <img src="/JClog.png" alt="嘉驰英才" className={className} />
<rect width="32" height="32" rx="6" fill="currentColor" />
<path d="M16 6 L24 10 L24 16 L16 20 L8 16 L8 10 Z" stroke="white" strokeWidth="1.5" strokeLinejoin="round" />
<circle cx="16" cy="13" r="2" fill="white" />
<path d="M12 24 L12 20 M20 24 L20 20 M16 22 L16 20" stroke="white" strokeWidth="1.5" strokeLinecap="round" />
<rect x="10" y="24" width="12" height="2" rx="1" fill="white" />
</svg>
) )
} }
+2 -2
View File
@@ -656,7 +656,7 @@ function handleAcceptanceExport() {
} }
const resultMap: Record<string, string> = { pass: '✅通过', fail: '❌失败', partial: '⚠️部分通过', untested: '🚫未测试' } const resultMap: Record<string, string> = { pass: '✅通过', fail: '❌失败', partial: '⚠️部分通过', untested: '🚫未测试' }
let md = `# 安职通 验收测试结果\n\n` let md = `# 嘉驰英才 验收测试结果\n\n`
md += `> **导出时间:** ${new Date().toLocaleString('zh-CN')}\n` md += `> **导出时间:** ${new Date().toLocaleString('zh-CN')}\n`
md += `> **验收人数:** ${keys.length}\n\n` md += `> **验收人数:** ${keys.length}\n\n`
@@ -705,7 +705,7 @@ function handleAcceptanceExport() {
md += `\n` md += `\n`
} }
md += `\n---\n*由安职通系统自动生成*\n` md += `\n---\n*由嘉驰英才系统自动生成*\n`
const blob = new Blob([md], { type: 'text/markdown;charset=utf-8' }) const blob = new Blob([md], { type: 'text/markdown;charset=utf-8' })
const url = URL.createObjectURL(blob) const url = URL.createObjectURL(blob)
+2 -2
View File
@@ -60,8 +60,8 @@ export default function ForgotPassword() {
<div className="min-h-screen flex items-center justify-center bg-surface px-4"> <div className="min-h-screen flex items-center justify-center bg-surface px-4">
<div className="w-full max-w-sm"> <div className="w-full max-w-sm">
<div className="flex items-center justify-center gap-2 mb-8"> <div className="flex items-center justify-center gap-2 mb-8">
<Logo className="w-8 h-8 text-primary" /> <Logo className="w-8 h-8 object-contain" />
<span className="text-xl font-bold"></span> <span className="text-xl font-bold"></span>
</div> </div>
<div className="card"> <div className="card">
+7 -7
View File
@@ -90,12 +90,12 @@ export default function Login() {
<div className="relative z-10 flex flex-col justify-between p-12 xl:p-16 text-white w-full"> <div className="relative z-10 flex flex-col justify-between p-12 xl:p-16 text-white w-full">
{/* Logo + 品牌名 */} {/* Logo + 品牌名 */}
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<div className="w-11 h-11 rounded-xl bg-white/15 backdrop-blur flex items-center justify-center"> <div className="w-11 h-11 rounded-xl bg-white/15 backdrop-blur flex items-center justify-center overflow-hidden">
<Logo className="w-7 h-7 text-white" /> <Logo className="w-8 h-8 object-contain" />
</div> </div>
<div> <div>
<div className="text-xl font-bold tracking-tight"></div> <div className="text-xl font-bold tracking-tight"></div>
<div className="text-xs text-white/60 mt-0.5"> · </div> <div className="text-xs text-white/60 mt-0.5"></div>
</div> </div>
</div> </div>
@@ -126,7 +126,7 @@ export default function Login() {
{/* 底部版权 */} {/* 底部版权 */}
<div className="text-xs text-white/40"> <div className="text-xs text-white/40">
© 2026 © 2026
</div> </div>
</div> </div>
</div> </div>
@@ -136,8 +136,8 @@ export default function Login() {
<div className="w-full max-w-sm"> <div className="w-full max-w-sm">
{/* 移动端 Logo */} {/* 移动端 Logo */}
<div className="flex lg:hidden items-center justify-center gap-2 mb-8"> <div className="flex lg:hidden items-center justify-center gap-2 mb-8">
<Logo className="w-8 h-8 text-primary" /> <Logo className="w-8 h-8 object-contain" />
<span className="text-xl font-bold"></span> <span className="text-xl font-bold"></span>
</div> </div>
{/* 欢迎语 */} {/* 欢迎语 */}
+2 -2
View File
@@ -51,8 +51,8 @@ export default function Register() {
<div className="min-h-screen flex items-center justify-center bg-surface px-4"> <div className="min-h-screen flex items-center justify-center bg-surface px-4">
<div className="w-full max-w-sm"> <div className="w-full max-w-sm">
<div className="flex items-center justify-center gap-2 mb-8"> <div className="flex items-center justify-center gap-2 mb-8">
<Logo className="w-8 h-8 text-primary" /> <Logo className="w-8 h-8 object-contain" />
<span className="text-xl font-bold"></span> <span className="text-xl font-bold"></span>
</div> </div>
<div className="card"> <div className="card">
+2 -2
View File
@@ -41,8 +41,8 @@ export default function AutoLogin() {
<div className="min-h-screen flex items-center justify-center bg-gray-50 px-4 pt-safe pb-safe"> <div className="min-h-screen flex items-center justify-center bg-gray-50 px-4 pt-safe pb-safe">
<div className="max-w-sm w-full text-center"> <div className="max-w-sm w-full text-center">
<div className="flex flex-col items-center justify-center gap-2 mb-8"> <div className="flex flex-col items-center justify-center gap-2 mb-8">
<Logo className="w-10 h-10 text-primary" /> <Logo className="w-10 h-10 object-contain" />
<span className="text-base font-bold text-center"> </span> <span className="text-base font-bold text-center"> </span>
</div> </div>
{status === 'loading' && ( {status === 'loading' && (
+2 -2
View File
@@ -63,8 +63,8 @@ export default function PortalLogin() {
<div className="min-h-screen flex items-center justify-center bg-gray-50 px-4 pt-safe pb-safe"> <div className="min-h-screen flex items-center justify-center bg-gray-50 px-4 pt-safe pb-safe">
<div className="w-full max-w-sm"> <div className="w-full max-w-sm">
<div className="flex flex-col items-center justify-center gap-2 mb-8"> <div className="flex flex-col items-center justify-center gap-2 mb-8">
<Logo className="w-10 h-10 text-primary" /> <Logo className="w-10 h-10 object-contain" />
<span className="text-base font-bold text-center"> </span> <span className="text-base font-bold text-center"> </span>
</div> </div>
<div className="card"> <div className="card">