宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

第三章:自定义看板视图
  • 上传者: Administrator
  • 上传时间:2023年12月05日 03时04分45秒
摘要:
警告 强烈建议在开始本章之前完成  第一章:字段和视图 [1] 。第3章介绍的概念,包括视图和示例,对于理解本章所涵盖的内容至关重要。 我们已经了解了Odoo Web框架提供的众多功能。接下来,我们将自定义看板视图。这是一个更复杂的项目,将展示框架的一些非平凡方面。目标是练习组合视图,协调UI的各个 ......
正文 相关文章 请喝咖啡

     警告

    强烈建议在开始本章之前完成 第一章:字段和视图。第3章介绍的概念,包括视图和示例,对于理解本章所涵盖的内容至关重要。

    我们已经了解了Odoo Web框架提供的众多功能。接下来,我们将自定义看板视图。这是一个更复杂的项目,将展示框架的一些非平凡方面。目标是练习组合视图,协调UI的各个方面,并以可维护的方式完成。

    Bafien有史以来最好的想法:看板视图和列表视图的混合将完美地满足您的需求!简而言之,他想在任务的看板视图左侧提供客户列表。当您在左侧侧边栏上单击客户时,右侧的看板视图将被过滤,仅显示与该客户相关的订单。

     目标

    ../../../_images/overview.png

    1. 创建一个新的看板视图

    由于我们正在自定义看板视图,因此让我们从扩展它并在T恤订单的看板视图中使用我们的扩展开始。

     Exercise

    1. 通过扩展看板控制器和创建新的视图对象来扩展看板视图。

    2. 在视图注册表中注册为 awesome_tshirt.customer_kanban

    3. 更新看板视图以使用扩展视图。可以使用 js_class 属性完成此操作。

    2. 创建一个 CustomerList 组件

    我们需要展示客户列表,因此我们可以创建该组件。

     Exercise

    1. 创建一个 CustomerList 组件,目前只显示一个带有一些文本的 div 。

    2. 它应该有一个 selectCustomer 属性。

    3. 创建一个新的模板,扩展(XPath)看板控制器模板,将 CustomerList 添加到看板渲染器旁边。现在先给它一个空函数 selectCustomer 。

    4. 子类化看板控制器,在其子组件中添加 CustomerList 。

    5. 确保您在看板视图中看到了您的组件。

    ../../../_images/customer_list.png

    3. 加载并显示数据

     Exercise

    1. 修改 CustomerList 组件,在 onWillStart 中获取所有客户的列表。

    2. 使用 t-foreach 在模板中显示列表。

    3. 每当选择了一个客户,调用 selectCustomer 函数属性。

    ../../../_images/customer_data.png

    4. 更新主看板视图

     Exercise

    1. 在看板控制器中实现 selectCustomer 以添加正确的域。

    2. 修改模板,将真实的功能赋给 CustomerList 的 selectCustomer 属性。

    由于与搜索视图进行交互并不容易,因此这里提供了一个快速的代码片段以帮助您:

    selectCustomer(customer_id, customer_name) {
       this.env.searchModel.setDomainParts({
          customer: {
                domain: [["customer_id", "=", customer_id]],
                facetLabel: customer_name,
          },
       });
    }
    
    ../../../_images/customer_filter.png

    5. 仅显示有有效订单的客户

    在 res.partner 上有一个 has_active_order 字段。让我们允许用户根据有活动订单的客户来过滤结果。

     Exercise

    1. 在 CustomerList 组件中添加一个类型为复选框的输入框,并在旁边加上标签“活跃客户”。

    2. 更改复选框的值应该过滤出具有有效订单的客户列表。

    ../../../_images/active_customer.png

    6. 在客户列表中添加搜索栏

     Exercise

    在客户列表上方添加一个输入框,允许用户输入字符串并根据客户姓名过滤显示的客户。

     小技巧

    您可以使用 fuzzyLookup 函数执行过滤。

    ../../../_images/customer_search.png

    7. 重构代码以使用 t-model

    为了解决前两个练习,你可能在输入框上使用了一个事件监听器。让我们看看如何以更加声明性的方式来完成,使用 t-model 指令。

     Exercise

    1. 确保你有一个反应式对象来表示过滤器是否激活(类似于 this.state = useState({ displayActiveCustomers: false, searchString: ''}))。

    2. 修改代码以添加一个名为 displayedCustomers 的 getter,该 getter 返回当前活动的客户列表。

    3. 修改模板以使用 t-model

    8. 分页显示客户!

     Exercise

    1. 在 CustomerList 中添加一个 pager,并且只加载/渲染前20个客户。

    2. 每当分页器改变时,客户列表应相应更新。

    这实际上非常困难,特别是与前面练习中的过滤相结合。需要考虑许多边缘情况。

    ../../../_images/customer_pager.png
    本文章从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信扫一扫,一分也是爱:
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: