diff --git a/college/data/about_pages.xml b/college/data/about_pages.xml index 4f6e3a1..7eb4d5d 100644 --- a/college/data/about_pages.xml +++ b/college/data/about_pages.xml @@ -84,6 +84,155 @@
  • 密码:首次登录请修改初始密码;忘记密码请联系管理员。
  • 本手册内容由管理员维护,如需补充或更正请联系管理员。
  • + + ]]> + + + + + + 产品介绍 + product + 30 + True + + +
    +
    +
    +
    + P + python企业实训平台 +
    +

    从 Python 语法到企业级项目实战

    +

    面向高校与职业院校的工程化 Python 实训平台,把企业真实开发场景搬进课堂

    +
    + 语法基础 + Web 开发 + 数据分析 + 自动化运维 + 企业项目 +
    +
    + + +
    +
    +
    6
    +
    阶段化实训体系
    +
    +
    +
    20+
    +
    企业级项目案例
    +
    +
    +
    1:1
    +
    真实企业开发环境
    +
    +
    +
    Odoo 18
    +
    企业级技术底座
    +
    +
    + + +
    +

    平台以 Odoo 18 为底座,围绕 Python 工程化实训重构教学链路:把企业的版本控制、代码评审、持续集成与云端编码环境原样搬进课堂。学员不再孤立地「学语法」,而是以真实项目为主线,在导师带领下走完「需求 → 编码 → 评审 → 部署」的完整闭环,让实训成果直接对接企业岗位能力要求。

    +
    + + +
    +

    核心功能

    +
    +
    +
    + 📚 + 阶段化实训课程 +
    +

    语法基础 → Web 开发 → 数据分析 → 自动化运维,分阶课程搭配视频 / PPT / 案例,循序渐进。

    +
    +
    +
    + ⌨️ + 在线编码沙箱 +
    +

    内置云端 Python 运行环境,免配置即可写代码、跑结果,练习与验证实时完成。

    +
    +
    +
    + 🏗️ + 企业项目库 +
    +

    汇集电商、数据看板、接口服务等 20+ 真实项目案例,学员按岗位方向挑选项目实战。

    +
    +
    +
    + ✅ + 作业评审闭环 +
    +

    学员提交代码 / 结果,导师在线批阅并给反馈,模拟企业 Code Review 流程。

    +
    +
    +
    + 📈 + 学习进展看板 +
    +

    按项目 / 章节统计完成度与代码质量,师生各有视角,实训进度一目了然。

    +
    +
    +
    + 🎯 + 岗位能力画像 +
    +

    沉淀学员项目经历与技能标签,生成能力画像,直接对标企业招聘需求。

    +
    +
    +
    + + +
    +

    实训链路

    +
    +
    +
    导师端
    +
    配置阶段课程 → 派发企业项目 → 批阅代码与结果 → 沉淀项目笔记 → 跟踪班级实训进度
    +
    +
    +
    学员端
    +
    进入项目实战 → 在线编码与运行 → 提交作业等待评审 → 查看能力画像与进阶建议
    +
    +
    +
    + + +
    +

    为什么选我们

    +
    +
    + 真项目真环境 +

    复刻企业 Git / CI / 云编码流程,实训即上岗预演。

    +
    +
    + 成果可量化 +

    代码提交、评审、完成度全程留痕,能力看得见。

    +
    +
    + 岗位对齐 +

    项目方向对标 Python 开发 / 数据分析 / 运维岗位。

    +
    +
    + 开箱即用 +

    基于 Odoo 18,手机 / 平板 / 电脑多端随时实训。

    +
    +
    +
    + + +
    + python企业实训平台 · 基于 Odoo 18 构建 · 让每一次练习都更接近真实开发 +
    ]]>
    diff --git a/college/models/about_page.py b/college/models/about_page.py index 845bfc6..afbe0fa 100644 --- a/college/models/about_page.py +++ b/college/models/about_page.py @@ -16,6 +16,7 @@ class YuthonAboutPage(models.Model): category = fields.Selection([ ('system', '系统说明'), ('operation', '操作手册'), + ('product', '产品介绍'), ], string='分类', default='system', required=True) content = fields.Html(string='内容', sanitize=True, translate=True) sequence = fields.Integer(string='排序', default=10) diff --git a/college/static/src/img/product_intro.png b/college/static/src/img/product_intro.png new file mode 100644 index 0000000..3632257 Binary files /dev/null and b/college/static/src/img/product_intro.png differ diff --git a/college/static/src/scss/college_theme.scss b/college/static/src/scss/college_theme.scss index 26f95dc..f05bbbf 100644 --- a/college/static/src/scss/college_theme.scss +++ b/college/static/src/scss/college_theme.scss @@ -151,3 +151,118 @@ } } } + +// ============================================================ +// 课程学习:章节列表看板化(网格卡片墙) +// 把内嵌 kanban 渲染成自适应的卡片网格,去掉默认列/分组样式。 +// ============================================================ +.o_college_chapter_kanban { + background: transparent !important; + border: none !important; + + // 去掉 kanban 默认分组列包裹,让卡片直接成为网格项 + .o_kanban_renderer { + display: grid !important; + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important; + gap: 16px !important; + align-items: stretch !important; + background: transparent !important; + padding: 0 !important; + } + + // 单列分组包裹层不参与布局,使其子卡片成为 renderer 的 grid item + .o_kanban_group { + display: contents !important; + } + + .o_kanban_record { + width: 100% !important; + margin: 0 !important; + border: none !important; + padding: 0 !important; + background: transparent !important; + } + + .o_college_chapter_card { + height: 100%; + display: flex !important; + flex-direction: column !important; + gap: 8px !important; + background-color: $o-view-background-color !important; + border: 1px solid rgba($o-main-text-color, 0.08) !important; + border-radius: 12px !important; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06) !important; + padding: 16px 18px !important; + transition: transform 0.15s ease, box-shadow 0.15s ease; + + &:hover { + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1) !important; + } + + .o_college_chapter_head { + display: flex !important; + align-items: center !important; + gap: 8px !important; + + .o_college_chapter_title { + font-size: 15px; + font-weight: 600; + color: $o-main-text-color !important; + } + } + + .o_college_chapter_video { + font-size: 13px; + color: $o-gray-600 !important; + } + + .o_college_chapter_foot { + margin-top: auto !important; + text-align: right !important; + } + } +} + +// ============================================================ +// 关于页(产品介绍等):只读 H5 撑满内容区,去掉四周大留白 +// content 字段内容已为全内联 style 的自包含 H5,这里只做容器铺满。 +// ============================================================ +.o_about_full_form { + // 去掉 form 默认内边距,让内容贴边 + padding: 0 !important; + + .o_form_renderer, + .o_form_renderer > .o_form_field { + padding: 0 !important; + margin: 0 !important; + } +} + +.o_about_full.o_field_html { + // 只读展示时铺满,无编辑器工具栏 + display: block !important; + padding: 0 !important; + margin: 0 !important; + max-width: 100% !important; + background: transparent !important; + border: none !important; + + .o_readonly { + padding: 0 !important; + } +} + +// 系统说明 / 操作手册 仍为普通富文本(保留基础样式) +.o_about_page { + max-width: 900px; + margin: 0 auto; + font-size: 14px; + line-height: 1.8; + color: $o-main-text-color; + + h2 { font-size: 22px; margin: 8px 0 16px; } + h3 { font-size: 17px; margin: 22px 0 10px; } + h4 { font-size: 15px; margin: 16px 0 8px; } + p, li { color: $o-main-text-color; } +} diff --git a/college/static/src/scss/college_theme_dark.scss b/college/static/src/scss/college_theme_dark.scss index 6a10f00..231a017 100644 --- a/college/static/src/scss/college_theme_dark.scss +++ b/college/static/src/scss/college_theme_dark.scss @@ -189,3 +189,113 @@ } } } + +// ============================================================ +// 课程学习:章节列表看板化(深色模式网格卡片墙) +// ============================================================ +.o_college_chapter_kanban { + background: transparent !important; + border: none !important; + + .o_kanban_renderer { + display: grid !important; + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important; + gap: 16px !important; + align-items: stretch !important; + background: transparent !important; + padding: 0 !important; + } + + .o_kanban_group { + display: contents !important; + } + + .o_kanban_record { + width: 100% !important; + margin: 0 !important; + border: none !important; + padding: 0 !important; + background: transparent !important; + } + + .o_college_chapter_card { + height: 100%; + display: flex !important; + flex-direction: column !important; + gap: 8px !important; + background-color: #1e293b !important; + border: 1px solid #334155 !important; + border-radius: 12px !important; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35) !important; + padding: 16px 18px !important; + transition: transform 0.15s ease, box-shadow 0.15s ease; + + &:hover { + transform: translateY(-2px); + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45) !important; + } + + .o_college_chapter_head { + display: flex !important; + align-items: center !important; + gap: 8px !important; + + .o_college_chapter_title { + font-size: 15px; + font-weight: 600; + color: #f8fafc !important; + } + } + + .o_college_chapter_video { + font-size: 13px; + color: #94a3b8 !important; + } + + .o_college_chapter_foot { + margin-top: auto !important; + text-align: right !important; + } + } +} + +// ============================================================ +// 关于页(产品介绍等):只读 H5 撑满内容区,去掉四周大留白 +// content 字段内容已为全内联 style 的自包含 H5,这里只做容器铺满。 +// ============================================================ +.o_about_full_form { + padding: 0 !important; + + .o_form_renderer, + .o_form_renderer > .o_form_field { + padding: 0 !important; + margin: 0 !important; + } +} + +.o_about_full.o_field_html { + display: block !important; + padding: 0 !important; + margin: 0 !important; + max-width: 100% !important; + background: transparent !important; + border: none !important; + + .o_readonly { + padding: 0 !important; + } +} + +// 系统说明 / 操作手册 仍为普通富文本(深色下基础样式) +.o_about_page { + max-width: 900px; + margin: 0 auto; + font-size: 14px; + line-height: 1.8; + color: #e2e8f0; + + h2 { font-size: 22px; margin: 8px 0 16px; color: #f8fafc; } + h3 { font-size: 17px; margin: 22px 0 10px; color: #f8fafc; } + h4 { font-size: 15px; margin: 16px 0 8px; color: #f8fafc; } + p, li { color: #cbd5e1; } +} diff --git a/college/views/about_page_views.xml b/college/views/about_page_views.xml index a3cb4c1..fa02122 100644 --- a/college/views/about_page_views.xml +++ b/college/views/about_page_views.xml @@ -1,21 +1,14 @@ + yuthon.about.page.form yuthon.about.page -
    - -
    -

    -
    - - - - - -
    + +
    diff --git a/college/views/chapter_views.xml b/college/views/chapter_views.xml index 0a74d5b..de0dd00 100644 --- a/college/views/chapter_views.xml +++ b/college/views/chapter_views.xml @@ -170,12 +170,25 @@ - - - + + + + + diff --git a/college/views/menus.xml b/college/views/menus.xml index fb7113d..3218b8d 100644 --- a/college/views/menus.xml +++ b/college/views/menus.xml @@ -1,4 +1,23 @@ + + + + + + 产品介绍 + yuthon.about.page + form + + current + + +