pengyuthon

This commit is contained in:
李鹏宇
2024-09-11 10:26:14 +08:00
parent 901a48f17b
commit 30f2295d98
5 changed files with 66 additions and 50 deletions
+22 -18
View File
@@ -15,7 +15,7 @@ class RoomBooking(models.Model):
_description = "Room Booking"
_order = "start_datetime desc, id"
name = fields.Char(string="Booking Name", required=True, tracking=1)
name = fields.Char(string="会议名称", required=True, tracking=1)
room_id = fields.Many2one("room.room", string="Room", required=True, ondelete="cascade",
group_expand="_read_group_room_id", tracking=4)
start_datetime = fields.Datetime(string="Start Datetime", required=True, tracking=2)
@@ -28,7 +28,10 @@ class RoomBooking(models.Model):
office_id = fields.Many2one(related="room_id.office_id", string="Office", readonly=True, store=True)
company_id = fields.Many2one(related="room_id.company_id", string="Company", readonly=True, store=True)
# pengyuthon
department_id = fields.Many2one('hr.department', related='organizer_id.employee_id.department_id', string="申请人部门")
is_notice = fields.Boolean(string="是否发布通知", default=True)
is_hour = fields.Boolean(string="提前一小时", default=True)
is_day = fields.Boolean(string="提前一天", default=True)
meeting_type = fields.Selection([('up', '线上'), ('down', '线下'), ('exterior', '外部')], default='down', string="会议形式",
required=True)
meeting_form = fields.Selection([('party', '党委会'), ('team', '班子会'), ('director', '董事会'),
@@ -39,7 +42,7 @@ class RoomBooking(models.Model):
users_role_ids = fields.Many2many('soong.user.role', string='角色范围')
room_users_ids = fields.Many2many('res.users', string="会议参加人员", compute="compute_room_users_ids", store=True)
other_company_id = fields.Many2one('res.partner', string="外部公司")
other_company_user_ids = fields.One2many(related="other_company_id.child_ids", string="外部人员")
other_company_user_ids = fields.One2many(related="other_company_id.child_ids", string="其他人员")
meeting_party_note = fields.Text(string="党之委会议纪要")
meeting_party_document_ids = fields.One2many('party.document', 'room_booking_id', string="党之委会议文档")
meeting_class_note = fields.Text(string="班子会议纪要")
@@ -53,6 +56,9 @@ class RoomBooking(models.Model):
meeting_data = fields.Html(string="会议说明", sanitize=False)
wechat_meetingid = fields.Char("企业微信会议室ID")
should_user = fields.Integer(string="应到")
right_user = fields.Integer(string="实到")
@api.onchange('room_id')
def onchange_meeting_data(self):
self.meeting_data = self.room_id.description
@@ -66,7 +72,7 @@ class RoomBooking(models.Model):
</select>
"""
if self.room_users_ids:
# 便利内部人员和外部人员
# 便利内部人员和其他人员
html_select = '<select>\n<option value="name0"> </option>\n'
for index, user in enumerate(self.room_users_ids, start=1):
value = f'name{index}'
@@ -87,21 +93,19 @@ class RoomBooking(models.Model):
@api.depends('department_ids', 'employee_ids', 'users_role_ids')
def compute_room_users_ids(self):
users_role_list = department_users_list = []
# 部门人员
if self.department_ids:
for depart in self.department_ids:
department_users_data = self.env['hr.employee'].search([('department_id', '=', depart.id.origin)])
department_users_list = [de.user_id.id for de in department_users_data]
# 人员
employee_users_list = self.employee_ids.user_id.ids
# 角色人员
if self.users_role_ids:
for user_id in self.users_role_ids:
user_role_data = self.env['hr.employee'].search([('user_role_id', '=', user_id.id.origin)])
users_role_list = [ro.user_id.id for ro in user_role_data]
publish_user_list = department_users_list + employee_users_list + users_role_list
self.room_users_ids = [(6, 0, list(set(publish_user_list)))]
department_users_list = users_role_list = []
for users in self:
if users.department_ids:
for depart in users.department_ids:
department_users_data = users.env['hr.employee'].search([('department_id', '=', depart.id.origin)])
department_users_list = [de.user_id.id for de in department_users_data]
employee_users_list = users.employee_ids.user_id.ids
if users.users_role_ids:
for user_id in users.users_role_ids:
user_role_data = users.env['hr.employee'].search([('user_role_id', '=', user_id.id.origin)])
users_role_list = [ro.user_id.id for ro in user_role_data]
publish_user_list = department_users_list + employee_users_list + users_role_list
users.room_users_ids = [(6, 0, list(set(publish_user_list)))]
def meet_notice(self):
if self.is_notice:
+2 -1
View File
@@ -14,6 +14,7 @@ class RoomMeetingSign(models.Model):
partner_name = fields.Char(string="单位")
job = fields.Char(string="职务")
mobile = fields.Char(string="手机号码")
user_type = fields.Selection([('insiders', '内部人员'), ('outsiders', '外部人员')], default='no', string="人员类型")
user_type = fields.Selection([('insiders', '内部人员'), ('outsiders', '其他人员')], default='no', string="人员类型")
sign_type = fields.Selection([('no', '未签到'), ('yes', '已签到')], default='no', string="签到状态")
sign_time = fields.Datetime(string="签到时间")
+40 -29
View File
@@ -132,45 +132,56 @@
class="oe_highlight"/>
<button name="sync_wechat_room" string="同步企业微信" type="object" class="oe_highlight"/>
</header>
<div class="oe_title mb-3">
<label for="name"/>
<h1>
<field name="name" placeholder="E.g. Team Meeting"/>
</h1>
</div>
<group>
<group string="参与人员">
<field name="stop_datetime" invisible="1"/>
<field name="start_datetime" string="会议时间" widget="daterange" options="{'end_date_field': 'stop_datetime'}"/>
</group>
<group>
<group>
<field name="organizer_id" widget="many2one_avatar_user"/>
<field name="department_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="users_role_ids" widget="many2many_tags"/>
<field name="room_users_ids" widget="many2many_tags" readonly="1"/>
<field name="other_company_user_ids" widget="many2many_tags" readonly="1"/>
</group>
<group string="基本信息">
<field name="room_id"/>
<field name="stop_datetime" invisible="1"/>
<field name="start_datetime" string="Date" widget="daterange" options="{'end_date_field': 'stop_datetime'}"/>
<field name="meeting_form"/>
<field name="name"/>
<field name="room_id"/>
</group>
<group>
<field name="department_id"/>
<field name="meeting_type"/>
<field name="fleet_id" invisible="meeting_type != 'exterior'"/>
<field name="meeting_place" invisible="meeting_type != 'exterior'"/>
<field name="is_notice"/>
</group>
</group>
<group>
<field name="department_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="users_role_ids" widget="many2many_tags"/>
<field name="room_users_ids" widget="many2many_tags" readonly="1"/>
<field name="other_company_user_ids" widget="many2many_tags" readonly="1"/>
<field name="is_notice"/>
<field name="is_hour" invisible="not is_notice"/>
<field name="is_day" invisible="not is_notice"/>
</group>
<notebook>
<page name="sign" string="签到详情">
<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"/>
</tree>
</field>
<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="note" string="会议纪要">
<group>
+1 -1
View File
@@ -16,7 +16,7 @@
<menuitem
id="room_room_menu"
name="Rooms"
name="会议地点"
action="room.room_room_action"
parent="room.room_menu_root"
sequence="2"/>
+1 -1
View File
@@ -163,7 +163,7 @@
parent="room_menu_root_board"
sequence="1"/>
<menuitem id="room_room_menu_board"
name="房间"
name="会议地点"
action="room.room_room_action"
parent="room_menu_root_board"
sequence="2"/>