需要在odoo10的状态栏中添加颜色(可用的openerp版本)
例如:<field name = 'state' widget=statusbar clickabe= 'True' statubar_colors='{"new": "blue"}'>

如何在odoo10的状态栏中添加颜色

状态栏中的不同状态需要不同的颜色
例如:蓝色代表草稿,绿色代表进步,红色代表取消

最佳答案

您有两种解决方案:


如果仅一个窗体视图需要这种行为,则很简单:


只需添加style标记即可击败css selector生成的Odoo

        <style>
            .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled {
               background: yellow;
            }
            .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after {
               border-left-color: yellow;
            }
        </style>
        ...
        ...
        <field name ="state" widget="statusbar">


在这里我使用了相同的css selector,因为它是在Odoo selector之后加载的,请注意,我的状态裸露按钮具有.disabled类,因为它是readonly我认为您必须更改clickabe= 'True'意味着它不是只读。


如果要在此处为​​所有模型使用此功能,则需要使用css file并将其添加到asset_backend模板,请确保选择器击败Odoo选择器。


   <template id="assets_backend" name="backend" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <link rel="stylesheet" href="/your_addon_name/static/src/css/your_css_file_name.css"/>
        </xpath>
    </template>


现在,我不再需要完全更改颜色了。在这里,您需要处理CSS以选择正确的元素,
例如,如果您只想在blue值为"new"时使状态栏颜色为selected,那么您会很幸运
Odoo在属性selected中显示的值data-value不会因转换而改变。

   .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"] {
        background: blue;
    }
    .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"]::after {
       border-left-color: blue;
    }


这是在Odoo 11中,当我检查元素时,我注意到了:


选择的状态为类btn-primary,其余状态为btn-default
只读具有属性disabled="disabled"和类disabled


只是为了证明这项工作,这是我所拥有的屏幕截图,您可能会有一些副作用,即当您在record中打开一些popup并且此form仍显示在网页中时,如果记录中有status裸露的widget,也会影响显示的记录,因为从网页中删除style tag视图时,也会删除form

colors - 在odoo 10的状态栏中添加颜色-LMLPHP

编辑:

假设您的选择有两个值:new,valid

如果选中,则将新颜色更改为蓝色,选择为绿色则有效。

<style>

       .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"] {
            background: blue;
        }
        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"]::after {
           border-left-color: blue;
        }

        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="progress"] {
            background: blue;
        }
        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="progress"]::after {
           border-left-color: blue;
        }

        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="cancel"] {
            background: red;
        }
        .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="cancel"]::after {
           border-left-color: red;
        }
</style>
...
...
...
<field name="state" .....>


都是通过data-value选择字段的方法。希望您能理解。这比必须处理javascript要容易。

08-18 01:24
查看更多