Files
shcool/learning_center/views/view_course_teaching_class.xml
T
liuhaoranandhrrr <liuhaoran> 0b2a587b69 school_gengxin (#2)
Co-authored-by: hrrr <liuhaoran>
Reviewed-on: #2
2026-06-16 19:30:44 +08:00

220 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="list_course_teaching_class" model="ir.ui.view">
<field name="name">course.teaching_class.list</field>
<field name="model">course.teaching_class</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="course_id"/>
<field name="semester" widget="badge"/>
<field name="main_teacher_id"/>
<field name="student_count" sum="合计"/>
<field name="max_students"/>
<field name="state" widget="badge"/>
</list>
</field>
</record>
<record id="form_course_teaching_class" model="ir.ui.view">
<field name="name">course.teaching_class.form</field>
<field name="model">course.teaching_class</field>
<field name="arch" type="xml">
<form string="教学班">
<sheet>
<div class="oe_title">
<h1>
<field name="display_name" placeholder="教学班名称"/>
</h1>
</div>
<div class="oe_button_box" name="button_box">
<button name="action_open_enroll" type="object" string="开放选课" class="btn-primary"
invisible="state not in ['draft']"/>
<button name="action_start_teaching" type="object" string="开始教学" class="btn-success"
invisible="state not in ['open']"/>
<button name="action_close" type="object" string="结课" class="btn-danger"
invisible="state not in ['teaching']"/>
<button name="action_cancel" type="object" string="取消课程" class="btn-warning"
invisible="state in ['closed','cancelled']"/>
</div>
<group name="basic_info" string="基本信息">
<group>
<field name="name"/>
<field name="code"/>
<field name="course_id" options="{'no_create': True}"/>
<field name="semester"/>
<field name="state" widget="statusbar"/>
</group>
<group>
<field name="main_teacher_id" options="{'no_create': True}"/>
<field name="teacher_ids" widget="many2many_tags"/>
<field name="assistant_ids" widget="many2many_tags"/>
</group>
</group>
<group name="schedule_info" string="上课安排">
<group>
<field name="schedule"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="total_weeks"/>
</group>
<group>
<field name="max_students"/>
<field name="min_students"/>
<field name="student_count" readonly="1"/>
<field name="is_full" widget="boolean_toggle" readonly="1"/>
</group>
</group>
<notebook>
<page string="选课学生">
<field name="student_ids" view_id="view_student_info_list_in_class"/>
<div class="oe_button_box" style="margin-top:8px;">
<button name="action_add_students" type="object" string="批量添加学生" class="btn-secondary"/>
<button name="action_import_students" type="object" string="导入学生名单" class="btn-secondary"/>
</div>
</page>
<!-- 选课记录:开启顶部行内编辑,支持连续快速新增多条 -->
<page string="选课记录">
<field name="enrollment_ids" view_id="view_enrollment_list"/>
</page>
<page string="课程作业">
<field name="homework_ids" context="{'default_course_id': course_id, 'default_teaching_class_id': id}" view_id="view_homework_list"/>
</page>
<page string="学生成绩">
<field name="student_score_ids" context="{'default_course_id': course_id, 'default_teaching_class_id': id}" view_id="view_student_score_list"/>
</page>
<page string="教学大纲/教案">
<field name="course_syllabus_ids" context="{'default_course_id': course_id}" view_id="view_course_syllabus_list_inside"/>
</page>
<page string="消息">
<field name="message_ids"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_student_info_list_in_class" model="ir.ui.view">
<field name="name">student.info.list.in.class</field>
<field name="model">student.info</field>
<field name="arch" type="xml">
<list editable="bottom">
<field name="stu_num"/>
<field name="stu_name"/>
<field name="class_id"/>
<field name="stu_phone"/>
</list>
</field>
</record>
<!-- 重点:editable="top" 顶部快速新建,可连续添加多条选课记录 -->
<record id="view_enrollment_list" model="ir.ui.view">
<field name="name">course.teaching.class.enrollment.list</field>
<field name="model">course.teaching_class.enrollment</field>
<field name="arch" type="xml">
<list editable="top">
<field name="student_id"/>
<field name="enroll_date"/>
<field name="state" widget="badge"/>
<field name="final_score"/>
<field name="grade_level" widget="badge"/>
</list>
</field>
</record>
<record id="view_homework_list" model="ir.ui.view">
<field name="name">course.homework.list</field>
<field name="model">course.homework</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="deadline"/>
<field name="total_score"/>
<field name="submitted_count"/>
<field name="state" widget="badge"/>
</list>
</field>
</record>
<record id="view_course_syllabus_list_inside" model="ir.ui.view">
<field name="name">course.syllabus.list.inside</field>
<field name="model">course.syllabus</field>
<field name="arch" type="xml">
<list>
<field name="title"/>
<field name="syllabus_type" widget="badge"/>
<field name="version"/>
</list>
</field>
</record>
<record id="view_student_score_list" model="ir.ui.view">
<field name="name">course.student.score.list</field>
<field name="model">course.student.score</field>
<field name="arch" type="xml">
<list>
<field name="student_id"/>
<field name="total_score"/>
<field name="grade_level" widget="badge"/>
</list>
</field>
</record>
<!-- 批量添加/导入学生 向导弹窗视图 -->
<record id="view_teaching_class_enrollment_wizard_form" model="ir.ui.view">
<field name="name">course.teaching_class.enrollment.wizard.form</field>
<field name="model">course.teaching_class.enrollment.wizard</field>
<field name="arch" type="xml">
<form string="批量添加学生">
<group col="2">
<field name="teaching_class_id" readonly="1"/>
</group>
<group string="手动选择学生">
<field name="student_ids" widget="many2many_tags" colspan="4"/>
</group>
<group string="Excel批量导入">
<field name="file" filename="filename"/>
<p style="color:gray;">Excel模板要求:首列标题为【学号】,按学号匹配学生</p>
</group>
<footer>
<button name="action_add_students" string="确认添加选中学生" type="object" class="btn-primary"/>
<button name="action_import_excel" string="执行Excel导入" type="object" class="btn-success"/>
<button string="关闭" special="cancel" class="btn-secondary"/>
</footer>
</form>
</field>
</record>
<!-- 教学班动作 -->
<record id="act_course_teaching_class" model="ir.actions.act_window">
<field name="name">教学班管理</field>
<field name="res_model">course.teaching_class</field>
<field name="view_mode">list,form</field>
</record>
<!-- 按课程查看教学班的动作 -->
<record id="act_course_teaching_class_by_course" model="ir.actions.act_window">
<field name="name">教学班</field>
<field name="res_model">course.teaching_class</field>
<field name="view_mode">list,form</field>
<field name="view_id" ref="list_course_teaching_class"/>
<field name="domain">[('course_id', '=', active_id)]</field>
<field name="context">{'default_course_id': active_id}</field>
</record>
<!-- 二级菜单 -->
<record id="menu_course_teaching_class_root" model="ir.ui.menu">
<field name="name">我的班级</field>
<field name="groups_id" eval="[(6,0,[ref('base.group_system'),ref('edu_base.group_teacher')])]"/>
</record>
<record id="menu_course_teaching_class" model="ir.ui.menu">
<field name="name">我的班级</field>
<field name="parent_id" ref="menu_course_teaching_class_root"/>
<field name="action" ref="act_course_teaching_class"/>
<field name="sequence">15</field>
<field name="groups_id" eval="[(6,0,[ref('base.group_system'),ref('edu_base.group_teacher')])]"/>
</record>
</odoo>