Files
gzth/soong_workflow/static/src/js/urgency_level_widget.js
T
2026-02-05 17:30:35 +08:00

42 lines
1.8 KiB
JavaScript

/** @odoo-module **/ // 声明这是一个Odoo模块,Odoo 17+必须有这个声明
// 从Odoo核心库导入注册表工具,用于注册自定义组件
import { registry } from "@web/core/registry";
// 从OWL框架导入Component基类,OWL是Odoo的前端框架
import { Component } from "@odoo/owl";
// 定义紧急度徽章Widget类,继承自OWL的Component基类
export class UrgencyLevelWidget extends Component {
// 指定使用的XML模板名称,对应urgency_level_widget.xml中的模板
static template = "soong_workflow.UrgencyLevelWidget";
// getter方法:根据紧急度值返回对应的CSS类名
get urgencyClass() {
// 从props中获取当前记录的urgency_level字段值
const level = this.props.record.data.urgency_level;
// 如果是急件,返回黄色样式类名
if (level === 'urgent') {
return 'urgency-urgent';
// 如果是特急件,返回红色样式类名(支持emergency和extra_urgent两种值)
} else if (level === 'emergency' || level === 'extra_urgent') {
return 'urgency-emergency';
}
// 默认返回白色样式类名(普件)
return 'urgency-normal';
}
// getter方法:判断是否显示"急"字徽章
get isVisible() {
// 从props中获取当前记录的urgency_level字段值
const level = this.props.record.data.urgency_level;
// 只有当值存在且不是'normal'时才显示(即只显示急件和特急件)
return level && level !== 'normal';
}
}
// 将自定义Widget注册到Odoo的字段组件注册表中
// 注册名为"urgency_level_badge",在视图中通过widget="urgency_level_badge"使用
registry.category("fields").add("urgency_level_badge", {
component: UrgencyLevelWidget, // 指定使用的组件类
});