Files
gzth/room/views/room_booking_views.xml
T
2026-08-20 18:16:28 +08:00

266 lines
14 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="room_booking_view_search" model="ir.ui.view">
<field name="name">Bookings search view</field>
<field name="model">room.booking</field>
<field name="arch" type="xml">
<search string="Booking">
<field name="name" string="Meeting name"/>
<field name="organizer_id"/>
<field name="room_id"/>
<field name="office_id"/>
<filter name="organizer_id" string="My Meetings" domain="[('organizer_id', '=', uid)]"/>
<filter name="group_by_organizer_id" context="{'group_by': 'organizer_id'}"/>
<filter name="group_by_room_id" context="{'group_by': 'room_id'}"/>
<filter name="group_by_office_id" context="{'group_by': 'office_id'}"/>
</search>
</field>
</record>
<record id="room_booking_view_gantt" model="ir.ui.view">
<field name="name">room.booking.view.gantt</field>
<field name="model">room.booking</field>
<field name="arch" type="xml">
<gantt js_class="room_booking_gantt"
date_start="start_datetime"
date_stop="stop_datetime"
default_group_by="room_id"
precision="{'day': 'hour:quarter', 'week': 'day:half', 'month': 'day:half', 'year': 'day:full'}"
default_scale="day"
dynamic_range="1"
color="organizer_id"
string="Bookings"
plan="0">
<templates>
<field name="name"/>
<field name="room_users_names"/>
<div t-name="gantt-popover">
<div class="o_gantt_popover">
<ul class="ps-1 mb-0 list-unstyled">
<li>
<strong>创建人:</strong>
<t t-out="organizer_id[1]"/>
</li>
<li class="o_gantt_popover_content_item mt-2">
<t t-out="start_datetime.toFormat('f ')"/>
<i class="fa fa-long-arrow-right" title="Until"/>
<t t-out="stop_datetime.toFormat(' f')"/>
</li>
<li>
<strong>参会人员:</strong>
<t t-out="room_users_names"/>
</li>
</ul>
</div>
</div>
</templates>
</gantt>
</field>
</record>
<record id="room_booking_view_calendar" model="ir.ui.view">
<field name="name">room.booking.view.calendar</field>
<field name="model">room.booking</field>
<field name="arch" type="xml">
<calendar date_start="start_datetime" date_stop="stop_datetime" color="room_id" quick_create="0"
event_open_popup="1">
<field name="room_id"/>
</calendar>
</field>
</record>
<record id="room_booking_view_list" model="ir.ui.view">
<field name="name">room.booking.view.list</field>
<field name="model">room.booking</field>
<field name="arch" type="xml">
<tree duplicate="0">
<field name="start_datetime"/>
<field name="stop_datetime"/>
<field name="name" string="Name"/>
<field name="room_id"/>
<field name="organizer_id" widget="many2one_avatar_user"/>
</tree>
</field>
</record>
<record id="room_booking_view_kanban" model="ir.ui.view">
<field name="name">room.booking.view.kanban</field>
<field name="model">room.booking</field>
<field name="arch" type="xml">
<kanban>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click">
<div class="o_kanban_record_top">
<strong class="o_kanban_record_title">
<field name="display_name"/>
</strong>
</div>
<div class="oe_kanban_content">
<ul class="ps-1 mb-0 list-unstyled">
<li>
<strong>Room:</strong>
<field name="room_id"/>
</li>
<li>
<strong>Date:</strong>
<field name="start_datetime"/>
<i class="fa fa-long-arrow-right mx-1" title="Until"/>
<field name="stop_datetime"/>
</li>
</ul>
</div>
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left"/>
<div class="oe_kanban_bottom_right">
<field name="organizer_id" widget="many2one_avatar_user"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="room_booking_view_form" model="ir.ui.view">
<field name="name">room.booking.view.form</field>
<field name="model">room.booking</field>
<field name="arch" type="xml">
<form duplicate="0">
<header>
<button name="meet_notice" string="会议通知" type="object" class="oe_highlight" invisible="not work_end"/>
<button name="meeting_sign_in" string="签到" invisible="meeting_type != 'down' or not work_end " type="object"
class="oe_highlight"/>
<button name="meeting_partner_create" string="录入" invisible="meeting_type != 'down' or not work_end"
type="object" class="oe_highlight"/>
<button name="sync_wechat_room" string="同步企业微信" type="object" class="oe_highlight" invisible="not work_end"/>
<button name="action_print_room_booking_agenda" string="打印" type="object" class="btn-primary"/>
</header>
<sheet>
<!-- 顶部信息行:流水号 / 本公司 / 紧急度(保持不动) -->
<group col="3">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<label for="is_this_company"/>
<div><field name="is_this_company"/></div>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
</group>
<!-- 标题 -->
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1" string="标题" placeholder="例如:2026-08-11 党总支部党员大会"/>
</h1>
</div>
<!-- 核心三字段:会议时间 / 会议地点 / 会议类型(始终可见,主区域显示) -->
<group col="3" class="o_field_highlight o_room_booking_core_fields">
<group string="会议时间">
<field name="start_datetime" string="会议时间" widget="daterange"
options="{'end_date_field': 'stop_datetime'}"/>
<field name="stop_datetime" invisible="1"/>
</group>
<group string="会议地点">
<field name="room_id" string="会议地点" domain=""/>
</group>
<group string="会议类型">
<field name="meeting_type_id" required="1"
domain="[('company_id', '=', company_id)]"
options="{'no_create': True}"/>
</group>
</group>
<!-- 其他次要字段折叠:使用 HTML5 <details> 默认收起。注意:open 是布尔属性,写 open="false" 也会展开,必须整段不写 open 才默认折叠 -->
<details class="o_inline_details mb-3">
<summary class="o_inline_details_summary">
<i class="fa fa-info-circle me-1"/>
<strong>详细信息</strong>
<span class="text-muted small ms-2">(默认折叠,点击展开:组织者、部门、参会人员、通知等)</span>
</summary>
<group col="2" class="o_room_booking_more_info">
<group string="组织与会议形式">
<!-- 隐藏字段 -->
<field name="user_id" invisible="1"/>
<field name="state" invisible="1"/>
<field name="is_back" invisible="1"/>
<field name="work_end" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="is_meeting" invisible="1"/>
<field name="partner_ids" widget="many2many_tags" force_save="1" invisible="1"/>
<field name="is_notice" invisible="1"/>
<!-- 可见字段 -->
<field name="organizer_id" options="{'no_create': True}"/>
<field name="department_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="meeting_type"/>
<field name="driver" invisible="meeting_type != 'exterior'"/>
<field name="fleet_id" invisible="meeting_type != 'exterior'"/>
<field name="meeting_place" invisible="meeting_type != 'exterior'"/>
<field name="host"
domain="[('company_id', '=', company_id), ('user_id.name', '!=', 'Administrator')] if is_this_company else []"
options="{'no_create': True}"/>
<label for="stationed_group"/>
<div><field name="stationed_group"/></div>
<field name="other_company_user_ids" widget="many2many_tags" readonly="0"/>
</group>
<group string="参会与通知">
<field name="room_users_ids" widget="many2many_tags"
domain="[('company_id', '=', company_id), ('name', '!=', 'Administrator')] if is_this_company else []"
options="{'no_create': True}"/>
<field name="recorder_ids" widget="many2many_tags"
domain="[('user_role_ids.name', 'ilike', '会议记录员')]"
options="{'no_create': True}"/>
<label for="is_notice"/>
<div><field name="is_notice"/></div>
<label for="task_time_ids" invisible="not is_notice"/>
<div><field name="task_time_ids" invisible="not is_notice" widget="many2many_tags"/></div>
</group>
</group>
</details>
<!-- 签到详情/会议说明/附件 折叠为 notebook,notebook 默认折叠为 tab 形式 -->
<notebook>
<page name="sign" string="签到详情">
<group>
<group>
<field name="should_user"/>
</group>
<group>
<field name="right_user"/>
</group>
<field name="meeting_sing_ids">
<tree delete="0" create="0">
<field name="room_booking_id" column_invisible="1"/>
<field name="sign_user_name"/>
<field name="partner_name"/>
<field name="job"/>
<field name="mobile"/>
<field name="user_type"/>
<field name="sign_type"/>
<field name="sign_time"/>
</tree>
</field>
</group>
</page>
<page name="meeting_html" string="会议说明">
<button name="button_meeting_data" string="座位排列" type="object" class="oe_highlight"/>
<field name="meeting_data" widget="tinymce"/>
</page>
<page string="附件" invisible="is_meeting">
<field name="documents_ids" widget="preview_many2many"/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="room_booking_action" model="ir.actions.act_window">
<field name="name">Bookings</field>
<field name="res_model">room.booking</field>
<field name="view_mode">list,kanban,form,search</field>
</record>
</odoo>