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 @@ - + - - - - + + +