Files
shcool/college/views/homework_views.xml
T
2026-08-07 18:45:07 +08:00

266 lines
13 KiB
XML

<odoo>
<!-- ===================== 作业布置 ===================== -->
<record id="action_yuthon_school_assignment" model="ir.actions.act_window">
<field name="name">作业布置</field>
<field name="res_model">yuthon.school.assignment</field>
<field name="view_mode">list,form</field>
<field name="context">{'search_default_my_assignments': 1}</field>
</record>
<record id="yuthon_school_assignment_view_list" model="ir.ui.view">
<field name="name">yuthon.school.assignment.list</field>
<field name="model">yuthon.school.assignment</field>
<field name="arch" type="xml">
<list string="作业">
<header>
<button name="action_publish_batch" type="object" string="批量发布"
class="btn-primary" groups="college.group_teacher"/>
</header>
<field name="name"/>
<field name="course_id"/>
<field name="teacher_id"/>
<field name="due_date"/>
<field name="submission_count"/>
<field name="state"/>
</list>
</field>
</record>
<record id="yuthon_school_assignment_view_form" model="ir.ui.view">
<field name="name">yuthon.school.assignment.form</field>
<field name="model">yuthon.school.assignment</field>
<field name="arch" type="xml">
<form>
<header>
<button name="action_publish" type="object" string="发布"
class="btn-primary"
invisible="state != 'draft'"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,published,closed"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name" placeholder="请输入作业标题"/>
</h1>
</div>
<group>
<group>
<field name="course_id"/>
<field name="teacher_id" readonly="1"/>
<field name="due_date"/>
</group>
<group>
<field name="attachment" filename="attachment_filename"/>
<field name="attachment_filename" invisible="1"/>
</group>
</group>
<notebook>
<page string="作业说明">
<field name="description"/>
</page>
<page string="提交记录">
<field name="submission_ids" readonly="1">
<list>
<field name="student_id"/>
<field name="submit_time"/>
<field name="score"/>
<field name="state"/>
</list>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="yuthon_school_assignment_view_search" model="ir.ui.view">
<field name="name">yuthon.school.assignment.search</field>
<field name="model">yuthon.school.assignment</field>
<field name="arch" type="xml">
<search>
<field name="name" string="作业标题"
filter_domain="[('name', 'ilike', self)]"/>
<field name="course_id" string="课程"/>
<field name="teacher_id" string="布置教师"/>
<filter name="my_assignments" string="我布置的"
domain="[('teacher_id', '=', uid)]"/>
<filter name="published" string="已发布"
domain="[('state', '=', 'published')]"/>
<group expand="0" string="分组">
<filter name="group_course" string="课程"
context="{'group_by': 'course_id'}"/>
<filter name="group_state" string="状态"
context="{'group_by': 'state'}"/>
</group>
</search>
</field>
</record>
<!-- ===================== 提交与批改(老师端) ===================== -->
<record id="action_yuthon_school_assignment_submission" model="ir.actions.act_window">
<field name="name">提交与批改</field>
<field name="res_model">yuthon.school.assignment.submission</field>
<field name="view_mode">list,form</field>
<field name="context">{'search_default_group_state': 1}</field>
</record>
<!-- ===================== 作业提交(学生端) ===================== -->
<record id="action_yuthon_school_my_submission" model="ir.actions.act_window">
<field name="name">作业提交</field>
<field name="res_model">yuthon.school.assignment.submission</field>
<field name="view_mode">kanban,list,form</field>
<field name="domain">['&amp;', ('student_id.user_id', '=', uid), ('assignment_id.course_id.state', '=', 'published')]</field>
<field name="context">{'search_default_my_submissions': 1}</field>
</record>
<record id="yuthon_school_assignment_submission_view_list" model="ir.ui.view">
<field name="name">yuthon.school.assignment.submission.list</field>
<field name="model">yuthon.school.assignment.submission</field>
<field name="arch" type="xml">
<list string="作业提交" multi_edit="1">
<header>
<button name="action_open_batch_wizard"
type="object" string="批量批改"
class="btn-primary"
groups="college.group_teacher"/>
<button name="action_download_attachments"
type="object" string="批量下载附件"
class="btn-secondary"
groups="college.group_teacher"/>
</header>
<field name="assignment_id"/>
<field name="student_id" string="姓名" groups="college.group_teacher"/>
<field name="score"/>
<field name="state"/>
<field name="submit_time"/>
<field name="due_date"/>
</list>
</field>
</record>
<record id="yuthon_school_assignment_submission_view_kanban" model="ir.ui.view">
<field name="name">yuthon.school.assignment.submission.kanban</field>
<field name="model">yuthon.school.assignment.submission</field>
<field name="arch" type="xml">
<kanban default_group_by="state"
default_order="due_date desc, id"
class="college-course-kanban college-kanban-homework o_kanban_mobile">
<field name="assignment_id"/>
<field name="student_id"/>
<field name="score"/>
<field name="state"/>
<field name="due_date"/>
<field name="submit_time"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click college-kanban-card"
style="padding:0; border-radius:8px; overflow:hidden;">
<!-- 顶帽:珊瑚渐变 + 得分 -->
<div style="background:linear-gradient(135deg,#F56565,#F6AD55); padding:10px 14px; display:flex; align-items:center; justify-content:space-between;">
<div class="college-kanban-title" style="color:#fff; font-size:13px; max-width:70%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;">
<field name="assignment_id"/>
</div>
<span class="college-kanban-badge college-kanban-badge-score">
<field name="score"/> 分
</span>
</div>
<!-- 主体 -->
<div class="college-kanban-body" style="padding:10px 14px;">
<div class="college-kanban-meta small mb-2" groups="college.group_teacher">
<i class="fa fa-user text-muted"/> <field name="student_id"/>
</div>
<div class="mb-2" style="display:flex; gap:6px; flex-wrap:wrap;">
<span class="college-kanban-badge college-kanban-badge-state">
<field name="state"/>
</span>
</div>
<div class="college-kanban-meta small text-muted" style="line-height:1.5;">
<div><i class="fa fa-calendar-check-o"/> 截止:<field name="due_date"/></div>
<t t-if="record.submit_time.raw_value">
<div><i class="fa fa-clock-o"/> 提交:<field name="submit_time"/></div>
</t>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="yuthon_school_assignment_submission_view_form" model="ir.ui.view">
<field name="name">yuthon.school.assignment.submission.form</field>
<field name="model">yuthon.school.assignment.submission</field>
<field name="arch" type="xml">
<form>
<header>
<button name="action_submit" type="object" string="提交"
class="btn-primary"
invisible="state != 'pending'"/>
<field name="state" widget="statusbar"
statusbar_visible="pending,submitted,graded"/>
</header>
<sheet>
<field name="name" invisible="1"/>
<group>
<field name="assignment_id" readonly="state in ('submitted', 'graded')"/>
<field name="student_id" invisible="1"/>
<field name="teacher_id" invisible="1"/>
</group>
<group string="老师布置的附件">
<field name="assignment_attachment"
filename="assignment_attachment_filename"
readonly="1"
string="附件"/>
<field name="assignment_attachment_filename" invisible="1"/>
</group>
<group>
<field name="due_date" readonly="1"/>
<field name="submit_time" readonly="1"/>
</group>
<group groups="college.group_teacher">
<field name="score"/>
</group>
<group>
<field name="content" readonly="state in ('submitted', 'graded')"/>
</group>
<group>
<field name="attachment" filename="attachment_filename" readonly="state in ('submitted', 'graded')"/>
<field name="attachment_filename" invisible="1"/>
</group>
<group groups="college.group_teacher">
<field name="feedback"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="yuthon_school_assignment_submission_view_search" model="ir.ui.view">
<field name="name">yuthon.school.assignment.submission.search</field>
<field name="model">yuthon.school.assignment.submission</field>
<field name="arch" type="xml">
<search>
<field name="assignment_id" string="作业"/>
<field name="student_id" string="学员"/>
<filter name="my_submissions" string="我的提交"
domain="[('student_id.user_id', '=', uid)]"/>
<filter name="pending" string="待提交"
domain="[('state', '=', 'pending')]"/>
<filter name="submitted" string="待批改"
domain="[('state', '=', 'submitted')]"/>
<filter name="graded" string="已批改"
domain="[('state', '=', 'graded')]"/>
<group expand="0" string="分组">
<filter name="group_assignment" string="作业"
context="{'group_by': 'assignment_id'}"/>
<filter name="group_state" string="状态"
context="{'group_by': 'state'}"/>
</group>
</search>
</field>
</record>
</odoo>