diff --git a/yuthon_notice/static/scss/notice_scss.scss b/yuthon_notice/static/scss/notice_scss.scss
index cd056d7ce..30663cca8 100644
--- a/yuthon_notice/static/scss/notice_scss.scss
+++ b/yuthon_notice/static/scss/notice_scss.scss
@@ -6,4 +6,146 @@
.btn-blue {
color: #0069ff !important;
+}
+
+/* ===== 公告标题(name 字段)在 tree 中自动换行 =====
+ 思路与 room.booking 议题列一致:Odoo list 视图不应用字段 style,
+ 列宽只能靠 width+options 锁定,再用 white-space:normal 强制换行。
+ 该类名仅 yuthon.notice 的 name 列使用,不会误伤其他列。*/
+.o_yuthon_notice_name_wrap {
+ /*锁列宽:让长标题有折行空间*/
+ max-width: 400px !important;
+ width: 400px !important;
+}
+
+/*对单元格及所有子元素强制换行 + 剥离可能产生的 chip 容器外观*/
+.o_yuthon_notice_name_wrap,
+.o_yuthon_notice_name_wrap *,
+.o_yuthon_notice_name_wrap .o_field_widget,
+.o_yuthon_notice_name_wrap .o_field_char,
+.o_yuthon_notice_name_wrap a,
+.o_yuthon_notice_name_wrap span {
+ white-space: normal !important;
+ word-break: break-word !important;
+ overflow-wrap: break-word !important;
+ overflow: visible !important;
+ text-overflow: clip !important;
+ /*去除任何 chip/容器外观的兜底样式(背景/边框/圆角/阴影/内外边距)*/
+ background: transparent !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ border-color: transparent !important;
+ border-style: none !important;
+ border-radius: 0 !important;
+ box-shadow: none !important;
+ outline: 0 !important;
+ padding: 0 !important;
+ margin: 0 !important;
+}
+
+/*若被包裹在 内,把 改成 display:contents 避免出现块状容器*/
+.o_yuthon_notice_name_wrap a {
+ display: contents !important;
+}
+
+/*td 自身保持合适行高,避免被任意内容撑高*/
+.o_yuthon_notice_name_wrap {
+ line-height: normal !important;
+ vertical-align: middle;
+}
+
+/* ===== 公告类型名称(name 字段)在 tree 中保持窄列 =====
+ 该字段实际只放 2 个汉字(通知/公告/决定/其他),不应占整列宽;
+ 锁列宽 120px 让 note 列有更多空间。
+ 同时保留强制换行兜底,将来万一有人填长名称也能正常显示。*/
+.o_yuthon_notice_type_name_short {
+ /*锁列宽:从 120 再缩短一倍到 60,单元格内容边距还得留一点*/
+ max-width: 60px !important;
+ width: 60px !important;
+}
+
+/*对单元格及所有子元素强制换行 + 剥离 chip 容器外观*/
+.o_yuthon_notice_type_name_short,
+.o_yuthon_notice_type_name_short *,
+.o_yuthon_notice_type_name_short .o_field_widget,
+.o_yuthon_notice_type_name_short .o_field_char,
+.o_yuthon_notice_type_name_short a,
+.o_yuthon_notice_type_name_short span,
+.o_yuthon_notice_type_name_short input,
+.o_yuthon_notice_type_name_short textarea {
+ white-space: normal !important;
+ word-break: break-word !important;
+ overflow-wrap: break-word !important;
+ overflow: visible !important;
+ text-overflow: clip !important;
+ /*去除任何 chip/容器外观的兜底样式(背景/边框/圆角/阴影/内外边距)*/
+ background: transparent !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ border-color: transparent !important;
+ border-style: none !important;
+ border-radius: 0 !important;
+ box-shadow: none !important;
+ outline: 0 !important;
+ padding: 0 !important;
+ margin: 0 !important;
+}
+
+/*若被包裹在 内,把 改成 display:contents 避免出现块状容器*/
+.o_yuthon_notice_type_name_short a {
+ display: contents !important;
+}
+
+/*td 自身保持合适行高,避免被任意内容撑高*/
+.o_yuthon_notice_type_name_short {
+ line-height: normal !important;
+ vertical-align: middle;
+}
+
+/* ===== 公告类型说明(note 字段)在 tree 中自动换行 =====
+ 思路同上,类名独立以免和 name 列相互影响。*/
+.o_yuthon_notice_type_note_wrap {
+ /*锁列宽:让长说明文字有折行空间,从 400 调到 600 容纳更多正文*/
+ max-width: 600px !important;
+ width: 600px !important;
+}
+
+/*对单元格及所有子元素强制换行 + 剥离 chip 容器外观;
+ editable="bottom" 模式下字段会渲染成 input,
+ 所以选择器要包含 input + textarea 才能在编辑态也生效。*/
+.o_yuthon_notice_type_note_wrap,
+.o_yuthon_notice_type_note_wrap *,
+.o_yuthon_notice_type_note_wrap .o_field_widget,
+.o_yuthon_notice_type_note_wrap .o_field_char,
+.o_yuthon_notice_type_note_wrap a,
+.o_yuthon_notice_type_note_wrap span,
+.o_yuthon_notice_type_note_wrap input,
+.o_yuthon_notice_type_note_wrap textarea {
+ white-space: normal !important;
+ word-break: break-word !important;
+ overflow-wrap: break-word !important;
+ overflow: visible !important;
+ text-overflow: clip !important;
+ /*去除任何 chip/容器外观的兜底样式(背景/边框/圆角/阴影/内外边距)*/
+ background: transparent !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ border-color: transparent !important;
+ border-style: none !important;
+ border-radius: 0 !important;
+ box-shadow: none !important;
+ outline: 0 !important;
+ padding: 0 !important;
+ margin: 0 !important;
+}
+
+/*若被包裹在 内,把 改成 display:contents 避免出现块状容器*/
+.o_yuthon_notice_type_note_wrap a {
+ display: contents !important;
+}
+
+/*td 自身保持合适行高,避免被任意内容撑高*/
+.o_yuthon_notice_type_note_wrap {
+ line-height: normal !important;
+ vertical-align: middle;
}
\ No newline at end of file
diff --git a/yuthon_notice/views/yuthon_notice_type_views.xml b/yuthon_notice/views/yuthon_notice_type_views.xml
index 4b32bc20f..f616ee3bb 100644
--- a/yuthon_notice/views/yuthon_notice_type_views.xml
+++ b/yuthon_notice/views/yuthon_notice_type_views.xml
@@ -5,8 +5,8 @@
yuthon.notice.type
-
-
+
+
diff --git a/yuthon_notice/views/yuthon_notice_views.xml b/yuthon_notice/views/yuthon_notice_views.xml
index 155772b05..43288fdac 100644
--- a/yuthon_notice/views/yuthon_notice_views.xml
+++ b/yuthon_notice/views/yuthon_notice_views.xml
@@ -7,7 +7,7 @@
-
+
@@ -121,7 +121,7 @@
decoration-danger="is_notice_roger == 'no'"
decoration-success="is_notice_roger == 'yes'"
js_class="custom_notice_tree_button" default_order="create_date1 desc">
-
+