Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改设备模块

This commit is contained in:
qihao.gong@jikimo.com
2023-08-07 16:03:13 +08:00
5 changed files with 214 additions and 35 deletions

View File

@@ -6,6 +6,9 @@ from odoo.addons.resource.models.resource import Intervals
class ResWorkcenter(models.Model): class ResWorkcenter(models.Model):
_inherit = "mrp.workcenter" _inherit = "mrp.workcenter"
# 生产线显示
production_line_show = fields.Char(string='生产线')
equipment_id = fields.Many2one('maintenance.equipment', string='设备') equipment_id = fields.Many2one('maintenance.equipment', string='设备')
machine_tool_id = fields.Many2one('sf.machine_tool', string='机床') machine_tool_id = fields.Many2one('sf.machine_tool', string='机床')
production_line_id = fields.Many2one('sf.production.line', string='生产线') production_line_id = fields.Many2one('sf.production.line', string='生产线')

View File

@@ -15,8 +15,33 @@ class CustomKanbanController extends KanbanController {
this.workOrders = await this.getAllWorkOrders(); this.workOrders = await this.getAllWorkOrders();
console.log('lines', this.workOrders); console.log('lines', this.workOrders);
} }
buttonClick(ev) {
const button = ev.currentTarget;
const id = button.getAttribute('data-id');
console.log('true_id', id);
const context = {production_line_show: 'shengchanxian1'}
this.env.services.rpc('/web/dataset/call_kw', {
model: 'mrp.workcenter',
method: 'search_read',
args: [[], ['id']],
kwargs: {}
}).then((records) => {
const ids = records.map(record => record.id);
const context = {production_line_show: id};
this.env.services.rpc('/web/dataset/call_kw', {
model: 'mrp.workcenter',
method: 'write',
args: [ids, context],
kwargs: {}
}).then((response) => {
console.log('response', response);
location.reload();
});
});
}
async getAllWorkOrders() { async getAllWorkOrders() {
const response = await this.env.services.rpc('/web/dataset/call_kw',{ const response = await this.env.services.rpc('/web/dataset/call_kw',{
model: 'sf.production.line', model: 'sf.production.line',
@@ -24,7 +49,14 @@ class CustomKanbanController extends KanbanController {
args: [], args: [],
kwargs: {}, kwargs: {},
}); });
// const response1 = await this.env.services.rpc('/web/dataset/call_kw',{
// model: 'mrp.workcenter',
// method: 'search_read',
// args: [],
// kwargs: {},
// });
console.log('response', response); console.log('response', response);
// console.log('response1', response1);
// 你可以在这里处理响应,例如将其存储在控制器的状态中 // 你可以在这里处理响应,例如将其存储在控制器的状态中
return response; return response;
} }

View File

@@ -1,18 +1,13 @@
.alerts { .choosekanban {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
margin-top: 1vw !important;
} }
.alerts>div { .choosekanban > button {
width: 3vw; width: 4vw !important;
height: 1.5vw; height: 2vw !important;
border: 1px solid grey; border: none !important;
border-radius: 5px; margin-left: 16px !important;
margin: 0 0.5vw;
justify-content: center;
} }
.alerts>div:nth-child(1) {
margin-left: 0 !important;
}

View File

@@ -1,18 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<templates> <templates>
<t t-name="sf_manufacturing.CustomKanbanView1" t-inherit="web.KanbanView" owl="1"> <t t-name="sf_manufacturing.CustomKanbanView1" t-inherit="web.KanbanView" owl="1">
<!-- <xpath expr="//Layout" position="before"> -->
<!-- <div> -->
<!-- Hello world ! -->
<!-- </div> -->
<!-- </xpath> -->
<xpath expr="//t[@t-component='props.Renderer']" position="before"> <xpath expr="//t[@t-component='props.Renderer']" position="before">
<div class="alerts"> <div class="choosekanban">
<!-- <t t-foreach="env['mrp.workcenter'].get_dynamic_data()" t-as="i" t-key="i"> --> <!-- <t t-foreach="env['mrp.workcenter'].get_dynamic_data()" t-as="i" t-key="i"> -->
<t t-foreach="workOrders" t-as="i" t-key="i"> <t t-foreach="workOrders" t-as="i" t-key="i">
<div> <button t-on-click="buttonClick" t-att-data-id="i.name">
<t t-esc="i.name"></t> <t t-esc="i.name"></t>
</div> </button>
</t> </t>
</div> </div>
</xpath> </xpath>

View File

@@ -94,6 +94,7 @@
<xpath expr="//field[@name='alternative_workcenter_ids']" position="after"> <xpath expr="//field[@name='alternative_workcenter_ids']" position="after">
<field name="production_line_id"/> <field name="production_line_id"/>
<field name="equipment_id"/> <field name="equipment_id"/>
<field name="production_line_show"/>
</xpath> </xpath>
<xpath expr="//field[@name='resource_calendar_id']" position="after"> <xpath expr="//field[@name='resource_calendar_id']" position="after">
<field name="is_process_outsourcing"/> <field name="is_process_outsourcing"/>
@@ -101,18 +102,173 @@
</field> </field>
</record> </record>
<record id="mrp_workcenter_view_kanban_inherit_maintenance" model="ir.ui.view"> <!-- <record id="mrp_workcenter_view_kanban_inherit_maintenance" model="ir.ui.view"> -->
<field name="name">mrp.workcenter.view.kanban.inherit.maintenance</field> <!-- <field name="name">mrp.workcenter.view.kanban.inherit.maintenance</field> -->
<field name="model">mrp.workcenter</field> <!-- <field name="model">mrp.workcenter</field> -->
<field name="inherit_id" ref="mrp.mrp_workcenter_kanban"/> <!-- <field name="inherit_id" ref="mrp.mrp_workcenter_kanban"/> -->
<field name="arch" type="xml"> <!-- <field name="arch" type="xml"> -->
<xpath expr="//div[@name='plan_order']" position="after"> <!-- <xpath expr="//div[@name='plan_order']" position="after"> -->
<div> <!-- <div> -->
<a name="%(maintenance.hr_equipment_request_action)d" type="action">Maintenance</a> <!-- <a name="%(maintenance.hr_equipment_request_action)d" type="action">Maintenance</a> -->
</div> <!-- </div> -->
</xpath> <!-- </xpath> -->
</field> <!-- </field> -->
</record> <!-- </record> -->
<!-- 继承原有的看板视图 -->
<record id="mrp_workcenter_kanban_inherit1" model="ir.ui.view">
<field name="name">mrp.workcenter.kanban.inherit</field>
<field name="model">mrp.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_workcenter_kanban"/>
<field name="arch" type="xml">
<xpath expr="//kanban" position="replace">
<kanban class="oe_background_grey o_kanban_dashboard o_workcenter_kanban" create="0" sample="1" js_class="custom_kanban1">
<field name="name"/>
<field name="color"/>
<field name="workorder_count"/>
<field name="working_state"/>
<field name="oee_target"/>
<field name="production_line_show"/>
<field name="production_line_id"/>
<templates>
<t t-name="kanban-box" t-if="record.production_line_id.value == record.production_line_show.raw_value">
<div t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''}">
<div t-attf-class="o_kanban_card_header o_kanban_record_top">
<div class="o_kanban_record_headings o_kanban_card_header_title">
<span class="o_primary ml8" style="display: inline-block">
<field name="name"/>
<field name="production_line_show"/>
</span>
</div>
<div class="o_kanban_manage_button_section">
<a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a>
</div>
</div>
<div class="container o_kanban_card_content">
<div class="row mb16">
<div class="col-6 o_kanban_primary_left">
<div class="btn-group" name="o_wo">
<t t-if="record.workorder_count.raw_value &gt; 0">
<button class="btn btn-primary" name="action_work_order" type="object" context="{'search_default_ready': 1, 'search_default_progress': 1}">
<span>WORK ORDERS</span>
</button>
</t>
<t t-if="record.workorder_count.raw_value &lt;= 0">
<button class="btn btn-warning" name="%(mrp.act_product_mrp_production_workcenter)d" type="action">
<span>PLAN ORDERS</span>
</button>
</t>
</div>
</div>
<div class="col-6 o_kanban_primary_right">
<div class="row" t-if="record.workorder_ready_count.raw_value &gt; 0">
<div class="col-8">
<a name="action_work_order" type="object" context="{'search_default_ready': 1}">
To Launch
</a>
</div>
<div class="col-4 text-end">
<field name="workorder_ready_count"/>
</div>
</div>
<div class="row" t-if="record.workorder_progress_count.raw_value &gt; 0">
<div class="col-8">
<a name="action_work_order" type="object" context="{'search_default_progress': 1}">
In Progress
</a>
</div>
<div class="col-4 text-end">
<field name="workorder_progress_count"/>
</div>
</div>
<div class="row" t-if="record.workorder_late_count.raw_value &gt; 0">
<div class="col-8">
<a name="action_work_order" type="object" context="{'search_default_late': 1}">
Late
</a>
</div>
<div class="col-4 text-end">
<field name="workorder_late_count"/>
</div>
</div>
<div class="row" t-if="record.oee.raw_value &gt; 0">
<div class="col-6">
<a name="%(mrp.mrp_workcenter_productivity_report_oee)d" type="action">
OEE
</a>
</div>
<div class="col-6 text-end">
<span t-att-class="record.oee_target.raw_value and (record.oee.raw_value &lt; record.oee_target.raw_value) and 'text-danger' or (record.oee.raw_value &gt; record.oee_target.raw_value) and 'text-success' or 'text-warning'">
<strong>
<field name="oee" widget="integer"/>%
</strong>
</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 o_kanban_primary_left" style="position:absolute; bottom:10px;" name="wc_stages">
<a name="%(mrp.act_mrp_block_workcenter)d" type="action" class="o_status float-end"
title="No workorder currently in progress. Click to mark work center as blocked."
aria-label="No workorder currently in progress. Click to mark work center as blocked."
attrs="{'invisible': [('working_state','in',('blocked','done'))]}"/>
<a name="unblock" type="object" class=" o_status o_status_red float-end"
title="Workcenter blocked, click to unblock."
aria-label="Workcenter blocked, click to unblock."
attrs="{'invisible': [('working_state','in',('normal','done'))]}"/>
<a name="%(mrp.act_mrp_block_workcenter)d" type="action" class="o_status o_status_green float-end"
title="Work orders in progress. Click to block work center."
aria-label="Work orders in progress. Click to block work center."
attrs="{'invisible': [('working_state','in',('normal','blocked'))]}"/>
</div>
</div>
</div><div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
<div class="row">
<div class="col-6 o_kanban_card_manage_section o_kanban_manage_view">
<div role="menuitem" class="o_kanban_card_manage_title">
<span>Actions</span>
</div>
<div role="menuitem" name="plan_order">
<a name="action_work_order" type="object">Plan Orders</a>
</div>
<div>
<a name="%(maintenance.hr_equipment_request_action)d" type="action">Maintenance</a>
</div>
</div>
<div class="col-6 o_kanban_card_manage_section o_kanban_manage_new">
<div role="menuitem" class="o_kanban_card_manage_title">
<span>Reporting</span>
</div>
<div role="menuitem">
<a name="%(mrp.mrp_workcenter_productivity_report_oee)d" type="action">OEE</a>
</div>
<div role="menuitem">
<a name="%(mrp.mrp_workorder_workcenter_report)d" type="action" context="{'search_default_thisyear':True}">
Performance
</a>
</div>
<div role="menuitem">
<a name="action_work_order" type="object" context="{'search_default_waiting': 1}">Waiting Availability</a>
</div>
</div>
</div>
<div t-if="widget.editable" class="o_kanban_card_manage_settings row">
<div role="menuitem" aria-haspopup="true" class="col-8">
<ul role="menu" class="oe_kanban_colorpicker" data-field="color"/>
</div>
<div role="menuitem" class="text-end">
<a type="edit">Settings</a>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</xpath>
</field>
</record>
<!-- MRP.PRODUCTION --> <!-- MRP.PRODUCTION -->
<record id="mrp_production_view_form_inherit_maintenance" model="ir.ui.view"> <record id="mrp_production_view_form_inherit_maintenance" model="ir.ui.view">
@@ -140,6 +296,4 @@
</field> </field>
</field> </field>
</record> </record>
</odoo> </odoo>