diff --git a/list_view_sticky_header_and_column/__manifest__.py b/list_view_sticky_header_and_column/__manifest__.py
index 6dcfc3b56..de7baa29f 100644
--- a/list_view_sticky_header_and_column/__manifest__.py
+++ b/list_view_sticky_header_and_column/__manifest__.py
@@ -37,6 +37,7 @@
'depends': ['account', 'purchase', 'hr_expense', 'web'],
'assets': {
'web.assets_backend': [
+ 'list_view_sticky_header_and_column/static/src/scss/form.scss',
'list_view_sticky_header_and_column/static/src/js'
'/list_view_sticky_header_and_column.js',
'list_view_sticky_header_and_column/static/src/xml'
diff --git a/list_view_sticky_header_and_column/static/src/scss/form.scss b/list_view_sticky_header_and_column/static/src/scss/form.scss
new file mode 100644
index 000000000..64604c946
--- /dev/null
+++ b/list_view_sticky_header_and_column/static/src/scss/form.scss
@@ -0,0 +1,146 @@
+.o_form_view.o_xxl_form_view, {
+ .o_form_sheet_bg {
+ > .o_form_sheet {
+ width: 100%;
+ max-width: calc(100% - 100px) !important;
+ }
+ }
+}
+
+button.btn {
+ margin-left: 3px;
+}
+
+/*
+选择o_wrap_field下具有o_required_modifier元素的标签, 在标签子元素o_wrap_label的label标签前面添加一个红色*号
+*/
+.o_wrap_field:has(.o_required_modifier) > .o_wrap_label {
+ position: relative; /* 为了使绝对定位的星号相对于标签定位 */
+}
+.o_wrap_field:has(.o_required_modifier) > .o_wrap_label label::before {
+ content: "*";
+ color: red;
+ font-weight: bold;
+ position: absolute;
+ left: 0.3rem; /* 根据需要调整位置 */
+ top: 50%;
+ transform: translateY(-50%);
+ font-size: 1.2rem; /* 根据需要调整字体大小 */
+}
+
+//.o_wrap_field:has(.o_required_modifier) > .o_wrap_label label::before {
+// content: "*";
+// color: red;
+// font-weight: bold;
+// display: inline-block;
+// //margin-left: -0.5rem;
+//}
+
+// 修改表单内label的样式
+.o_form_sheet, .o_form_nosheet {
+ .grid {
+ gap: 0 !important;
+ }
+ //.o_group {
+ // border-bottom: 1px solid black;
+ //}
+ > .o_inner_group:first-child {
+ border: 1px solid #{$gray-200};
+ border-bottom: none;
+ }
+ > .o_inner_group:not(:first-child) {
+ border-right: 1px solid #{$gray-200};
+ border-left: 2px solid #{$gray-200};
+ }
+ > .o_group:first-child {
+ border: 1px solid #{$gray-200};
+ border-bottom: none;
+ }
+ .o_group {
+ border-right: 1px solid #{$gray-200};
+ border-left: 1px solid #{$gray-200};
+ //box-shadow: inset 1px 0 0 #{$gray-200}, inset -1px 0 0 #{$gray-200};
+ margin-right: calc(var(--gutter-x) * .0) !important;
+ margin-left: calc(var(--gutter-x) * .0) !important;
+ .o_inner_group {
+ padding-right: calc(var(--gutter-x) * .0) !important;
+ padding-left: calc(var(--gutter-x) * .0) !important;
+ }
+ //* {
+ // padding-right: calc(var(--gutter-x) * .0) !important;
+ // padding-left: calc(var(--gutter-x) * .0) !important;
+ //}
+ }
+ .o_horizontal_separator:not(:empty) {
+ text-align: center;
+ border-bottom: 1px solid #FFFFFF;
+ box-shadow: none;
+ //box-shadow: inset 0 1px 0 0 #FFFFFF !important;
+ padding: 0.5rem 1rem;
+ background: #{$gray-200};
+ margin-bottom: 0 !important;
+ margin-top: 0 !important;
+ font-size: var(--body-font-size);
+ }
+ .o_inner_group {
+ --columns: 1;
+ gap: 0 !important;;
+ margin-bottom: 0 !important;
+ border-left: 1px solid #{$gray-200};
+ margin-right: 0;
+ //box-shadow: inset 1px 0 0 #{$gray-200}, inset -1px 0 0 #{$gray-200}, inset 0 1px 0 #{$gray-200};
+ //grid-template-columns: minmax(150px, auto) minmax(0, 1fr) !important;
+ }
+ .o_wrap_field {
+ .o_form_label {
+ margin-bottom: 0 !important;
+ }
+ .o_field_widget {
+ margin-bottom: 0 !important;
+ }
+ .o_wrap_label {
+ display: flex;
+ align-items: center;
+ }
+ .o_wrap_label:not(:last-child) {
+ padding: 0.8rem 1rem;
+ }
+ // 其实也是选择的label,不过防止有些样式覆盖
+ .o_cell.o_wrap_label {
+ background: #{$gray-200} !important;
+ border-bottom: 1px solid #FFFFFF !important;
+ //margin-right: -1px !important;
+ }
+
+ .o_wrap_input {
+ padding: 0 0 0 1rem;
+ display: flex;
+ align-items: center;
+ .o_field_x2many_list {
+ margin-left: -1rem !important;
+ width: calc(100% + 1rem) !important;
+ }
+ }
+ // 选择的也是o_wrap_input,不过有些字段设置nolabel后上面的选择不会被识别
+ .o_cell:not(.o_wrap_label) {
+ border: 1px solid #{$gray-200} !important;
+ margin-top: -1px !important;
+ //box-shadow: inset 0 -1px 0 #{$gray-200};
+ border-right: none;
+ display: flex;
+ align-items: center;
+ }
+ }
+ .o_form_statusbar {
+ border: 1px solid #{$gray-200};
+ border-bottom: none;
+ .o_form_statusbar {
+ button {}
+ }
+ }
+}
+//.o_form_editable {
+// .o_wrap_input {
+// box-shadow: inset 0px -15px 30px -30px #{$gray-200};
+// }
+//}
\ No newline at end of file
diff --git a/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss b/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss
index 706cb7d71..72dc1ebfa 100644
--- a/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss
+++ b/list_view_sticky_header_and_column/static/src/scss/list_view_sticky_header_and_column.scss
@@ -33,10 +33,10 @@
}
.o_form_view:not(.o_field_highlight) .o_field_widget:not(.o_field_invalid):not(.o_field_highlight) .o_input:not(:hover):not(:focus) {
--o-input-border-color: transparent;
- border-style: solid;
- border-color: #000;
- border-width: 0px;
- border-bottom-width: 1px;
+ //border-style: solid;
+ //border-color: #000;
+ //border-width: 0px;
+ //border-bottom-width: 1px;
}
body.white .table {
width: -webkit-fill-available !important;
@@ -63,3 +63,5 @@ th:hover .fa-thumb-tack,
th.clicked-header .fa-thumb-tack {
display: block;
}
+
+//.o_input:hover{background: #b3c8df!important;}
diff --git a/room/models/room_booking.py b/room/models/room_booking.py
index 3a24d2d9d..b68b6cfd5 100644
--- a/room/models/room_booking.py
+++ b/room/models/room_booking.py
@@ -24,18 +24,17 @@ class RoomBooking(models.Model):
default=lambda self: self.env.user.id if not self.env.user._is_public() else False,
tracking=5)
- # Fields used to group bookings in gantt view
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_type_id = fields.Many2one('room.meeting.type', string="会议类型",)
- room_users_ids = fields.Many2many('res.users', string="会议参加人员",store=True)
+ meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型")
+ room_users_ids = fields.Many2many('res.users', string="会议参加人员", store=True)
other_company_id = fields.Many2one('res.partner', string="外部公司")
other_company_user_ids = fields.One2many(related="other_company_id.child_ids", string="其他人员")
@@ -53,7 +52,6 @@ class RoomBooking(models.Model):
# 关联流程
relevancy_type = fields.Selection([('none', '无')], string="关联流程类型")
- #打开选择范围弹窗
def open_select_range_wizard(self):
return {
'name': '选择范围',
@@ -67,7 +65,6 @@ class RoomBooking(models.Model):
@api.model_create_multi
def create(self, vals_list):
bookings = super(RoomBooking, self).create(vals_list)
- # Notify frontend views of new bookings
for room, bookings in bookings.grouped("room_id").items():
room._notify_booking_view("create", bookings)
data = vals_list[0]
@@ -112,29 +109,6 @@ class RoomBooking(models.Model):
html_content = file.read().replace('姓名', html_select)
self.write({'meeting_data': html_content})
- # @api.depends('department_ids', 'employee_ids', 'users_role_ids')
- # def compute_room_users_ids(self):
- # 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)])
- # department_users_list = [de.user_id.id for de in department_users_data]
- # if depart.child_ids:
- # for child in depart.child_ids:
- # department_child_users_data = users.env['hr.employee'].search(
- # [('department_id', '=', child.id)])
- # department_users_list += [de.user_id.id for de in department_child_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), ('user_role_ids', '=', user_id.id)])
- # 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
- # false_none_list = [x for x in publish_user_list if x != False]
- # users.room_users_ids = [(6, 0, list(set(false_none_list)))]
-
@api.onchange('department_ids', 'employee_ids', 'users_role_ids', 'room_users_ids')
def onchange_partner_ids(self):
for par in self:
@@ -161,9 +135,6 @@ class RoomBooking(models.Model):
self.env['room.meeting.sign'].create({
'room_booking_id': self.id,
'partner_name': external.name,
- # 'sign_user_name': external.name, # 单位名称里面的联系人
- # 'job': external.function,
- # 'mobile': external.mobile,
'user_type': 'outsiders',
'sign_type': 'no',
})
@@ -181,9 +152,7 @@ class RoomBooking(models.Model):
# 企业用户发送通知
partner_ids = self.sudo().env['res.users'].search([('id', 'in', self.room_users_ids.ids)]).mapped(
'partner_id').ids
- self.sudo().with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids,
- 'room.message_yuthon_room_users_data')
- # odoo发通知
+ self.sudo().with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'room.message_yuthon_room_users_data')
def meeting_sign_in(self):
# 页面填写信息之后返回给地址
diff --git a/room/static/src/css/form_width.css b/room/static/src/css/form_width.css
index 2704b2e82..6572b5167 100644
--- a/room/static/src/css/form_width.css
+++ b/room/static/src/css/form_width.css
@@ -1,3 +1,3 @@
-.wizard_width {
- width: 50% !important;
+.horizontal-button {
+ white-space: nowrap !important; /* 确保文本不换行 */
}
\ No newline at end of file
diff --git a/room/views/room_booking_views.xml b/room/views/room_booking_views.xml
index 57a795ab6..7f192391b 100644
--- a/room/views/room_booking_views.xml
+++ b/room/views/room_booking_views.xml
@@ -128,8 +128,7 @@
+ type="object" class="oe_highlight"/>