【odoo】odoo基本视图中的kanban视图

文章目录

    • 概要
    • 看板视图的基本特点:
    • 看板视图的工作流程:
    • 看板视图的优点:
    • 举个例子
    • 关键要素解析
    • 总结

概要

Odoo 看板视图(Kanban View) 是 Odoo 中的一种可视化视图,它通常用于管理任务、项目、销售机会、库存管理等业务流程。看板视图的设计灵感来源于“看板管理”方法,这种方法源于日本丰田汽车生产体系,它注重流程的可视化和任务的快速流转。通过看板视图,用户可以更直观地查看工作状态、追踪任务进度,并快速对任务进行处理。

看板视图的基本特点:

  • 列(Stages):每个看板视图由多个列组成,列通常代表某一业务流程的不同阶段。例如,在销售管理中,列可以代表“新建”、“已报价”、“谈判中”、“已关闭”等销售阶段。在项目管理中,列可以表示任务的不同状态,如“待处理”、“进行中”、“已完成”等。

  • 卡片(Cards):每个列中包含一个或多个任务卡片(也可以是销售机会、项目任务等)。这些卡片代表单个任务或条目,显示了任务的基本信息,例如标题、负责人、截止日期等。用户可以通过拖放卡片来更改其状态。

  • 可拖拽操作:用户可以通过拖拽卡片将其从一个阶段移动到另一个阶段,这使得看板成为一个动态且交互性强的工作管理工具。这个过程非常直观,便于管理者跟踪任务的进度并快速做出调整。

  • 颜色编码与过滤:在看板视图中,任务卡片通常可以根据优先级、状态、负责人等进行颜色编码或标签标记,用户可以方便地进行筛选与分类。

看板视图的工作流程:

假设你是一个项目经理,负责跟踪一个软件开发项目中的多个任务。你创建了一个看板视图,划分了几个工作阶段,如“待办”、“进行中”和“已完成”。每个任务(例如开发新功能、修复bug等)都代表一个卡片。

在“待办”列,你会看到所有待办的任务。你可以设置任务的负责人、截止日期和优先级。当任务开始时, 开发人员会把任务从“待办”列拖动到“进行中”列,表示他们正在处理该任务。一旦任务完成, 它会被拖动到“已完成”列,显示任务已成功完成。这个流程帮助项目经理实时监控任务的状态,并能快速响应任何阻碍进度的问题。

看板视图的优点:

  1. 可视化:看板视图将复杂的任务和流程以图形化的方式呈现,使得工作状态一目了然。
  2. 灵活性:可以自定义列和卡片的内容,适应不同的业务需求。
  3. 易于操作:通过拖放操作,可以方便地改变任务的状态,适应快速变化的工作环境。 提高团队协作:团队成员可以实时查看工作进展,协同工作更有效。
  4. 透明度:领导层可以轻松监控项目的进度和瓶颈,从而做出更好的决策。

举个例子

销售产品的看板视图

<record id="view_product_product_gy_cp_kanban" model="ir.ui.view">
            <field name="name">product_product.kanbanfield>
            <field name="model">product.productfield>
            <field name="arch" type="xml">
                <kanban sample="1" class="o_kanban_product_template">
                    <field name="id"/>
                    <field name="product_variant_count"/>
                    <field name="currency_id"/>
                    <field name="activity_state"/>
                    <progressbar field="activity_state"
                                 colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
                    <templates>
                        <t t-name="kanban-box">
                            <div class="oe_kanban_card oe_kanban_global_click">
                                <div class="o_kanban_image me-1">
                                    <img t-att-src="kanban_image('product.product', 'pp_image1_512', record.id.raw_value)"
                                         alt="Product" class="o_image_64_contain"/>
                                div>
                                <div class="oe_kanban_details">
                                    <div class="o_kanban_record_top mb-0">
                                        <div class="o_kanban_record_headings">
                                            <strong class="o_kanban_record_title">
                                                <field name="name"/>
                                            strong>
                                        div>
                                        <field name="priority" widget="priority"/>
                                    div>
                                    <t t-if="record.default_code.value">[<field name="default_code"/>]
                                    t>
                                    <div t-if="record.product_variant_count.value > 1"
                                         groups="product.group_product_variant">
                                        <strong>
                                            <t t-esc="record.product_variant_count.value"/>
                                            Variants
                                        strong>
                                    div>
                                    <div name="product_lst_price" class="mt-1">
                                        单价:
                                        <field name="list_price" widget="monetary"
                                               options="{'currency_field': 'currency_id', 'field_digits': True}">field>
                                    div>
                                div>
                            div>
                        t>
                    templates>
                kanban>
            field>
        record>

其效果如下:
【odoo】odoo基本视图中的kanban视图_第1张图片
看板视图是一种可以在面板上显示诸多信息的一种视图结构,是odoo最常见的几种视图结构之一。

看板视图的要求在kanban节点内将用到的字段列出来, 看板的布局使用QWEB技术在templates标签内完成。

关键要素解析

  • 模板的定义
<t t-name="kanban-box">
这是模板的定义,指定了模板的名称为 kanban-box,并且它将在 Kanban 视图中被用来渲染每一项记录的卡片
  • 卡片容器
<div class="oe_kanban_card oe_kanban_global_click">
每个卡片(记录)都被包装在 
标签内, oe_kanban_card 是一个 Odoo 默认的样式类,用于渲染卡片,而 oe_kanban_global_click 则允 许点击整个卡片以进行交互。 1.oe_kanban_card:为每个卡片应用基础样式。 2.oe_kanban_global_click:允许用户点击整个卡片来进行跳转或其他操作。
  • 产品图片
<div class="o_kanban_image me-1">
    <img t-att-src="kanban_image('product.product', 'pp_image1_512', record.id.raw_value)"
         alt="Product" class="o_image_64_contain"/>
div>
该部分用于显示产品的图片,调用了 kanban_image() 方法来动态生成图片的 URL,并将其显示在卡片上。
1.kanban_image():这是 Odoo 的一个 QWeb 内置方法,用于生成指定模型(此处为 product.product)
的图像 URL
2.pp_image1_512:这是产品模型中定义的图像字段。
3.record.id.raw_value:表示当前记录的 ID,通过该 ID 获取对应的图片。

- 任务/产品名称

<div class="o_kanban_record_top mb-0">
    <div class="o_kanban_record_headings">
        <strong class="o_kanban_record_title">
            <field name="name"/>
        </strong>
    </div>
name:代表记录的名称字段(如产品名称、任务名称等)。

- 产品编码

<t t-if="record.default_code.value">[<field name="default_code"/>]</t>
widget="priority":使得 priority 字段渲染为带有不同优先级标识的视觉组件。
  • 在举个例子
<div class="o_kanban_priority">
    <t t-if="record.priority.raw_value == '2'">
        <span class="o_priority_high">High</span>
    </t>
    <t t-if="record.priority.raw_value == '1'">
        <span class="o_priority_normal">Normal</span>
    </t>
    <t t-if="record.priority.raw_value == '0'">
        <span class="o_priority_low">Low</span>
    </t>
</div>
优先级显示:通过 t-if 判断条件,检查任务的 priority 字段值并显示不同的优先级。
record.priority.raw_value 获取字段的实际值,然后通过条件判断,渲染不同的优先级标签。

- 产品变体

<div t-if="record.product_variant_count.value > 1"
     groups="product.group_product_variant">
    <strong>
        <t t-esc="record.product_variant_count.value"/>
        Variants
    </strong>
</div>
如果产品有多个变体(product_variant_count 大于 1),则显示变体数量。在该部分中还包括了 
groups="product.group_product_variant",表示只有在用户具有相应权限的情况下才显示此部分。

- 单价

<div name="product_lst_price" class="mt-1">
    单价:
    <field name="list_price" widget="monetary"
           options="{'currency_field': 'currency_id', 'field_digits': True}"></field>
</div>
1.list_price:产品的销售价格。
2.widget="monetary":将该字段显示为货币格式,currency_field='currency_id' 指定货币字段,
field_digits=True 保留小数位。

总结

在这个看板视图的模板中,我们可以看到如何利用 Odoo QWeb 技术来动态展示记录的各类信息。通过 QWeb 指令(如 和 )控制字段的显示,以及通过 widget 属性来指定字段的展示方式(如优先级小部件、货币格式等)。同时,模板还使用了条件语句来决定是否显示特定的字段,例如产品的变体数量和产品编码。

`每日学习,进步一点点

你可能感兴趣的:(odoo,python)