Accept Merge Request #413: (feature/修改机床参数bug -> develop)

Merge Request: 修改设备table的样式  修改关联品牌根据各不同类别展示

Created By: @龚启豪
Accepted By: @龚启豪
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/413?initial=true
This commit is contained in:
龚启豪
2023-10-12 14:11:26 +08:00
committed by Coding
9 changed files with 515 additions and 301 deletions

View File

@@ -305,3 +305,15 @@ div[class="o_content o_component_with_search_panel"] .o_kanban_primary_right > .
.test_model>div .o_field_widget { .test_model>div .o_field_widget {
width: 40% !important; width: 40% !important;
} }
.o_form_label {
font-weight: 700 !important;
}
.bigger .o_horizontal_separator {
font-size: 1.5rem;
}
.o_horizontal_separator {
font-size: 1.5rem;
}

View File

@@ -30,7 +30,7 @@ class FixtureModel(models.Model):
fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料", ) fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料", )
fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name', store=True) fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name', store=True)
multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型") multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型")
brand_id = fields.Many2one('sf.machine.brand', string="品牌") brand_id = fields.Many2one('sf.machine.brand', string="品牌", domain="[('tag_ids.name', 'ilike', '夹具')]")
clamping_way = fields.Char(string="装夹方式") clamping_way = fields.Char(string="装夹方式")
port_type = fields.Char(string="接口类型") port_type = fields.Char(string="接口类型")
model_file = fields.Binary(string="3D模型图") model_file = fields.Binary(string="3D模型图")

View File

@@ -70,7 +70,7 @@ class IntegralCuttingTool(models.Model):
# 整体式刀具类型字段,关联整体式刀具类型对象 # 整体式刀具类型字段,关联整体式刀具类型对象
integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型') integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型')
# 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段 # 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段
brand = fields.Many2one('sf.machine.brand', '品牌') brand = fields.Many2one('sf.machine.brand', '品牌', domain="[('tag_ids.name', 'ilike', '刀具')]")
total_length = fields.Float('总长度(mm)') total_length = fields.Float('总长度(mm)')
shank_length = fields.Float('柄部长度(mm)') shank_length = fields.Float('柄部长度(mm)')
blade_length = fields.Float('刃部长度(mm)') blade_length = fields.Float('刃部长度(mm)')

View File

@@ -101,7 +101,7 @@ class CuttingToolModel(models.Model):
cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True) cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True)
cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='刀具类型', cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='刀具类型',
) )
brand_id = fields.Many2one('sf.machine.brand', '品牌') brand_id = fields.Many2one('sf.machine.brand', '品牌', domain="[('tag_ids.name', 'ilike', '刀具')]")
tool_length = fields.Integer('长度(mm)') tool_length = fields.Integer('长度(mm)')
tool_width = fields.Integer('宽度(mm)') tool_width = fields.Integer('宽度(mm)')
tool_height = fields.Integer('高度(mm)') tool_height = fields.Integer('高度(mm)')

View File

@@ -97,7 +97,7 @@ class SfMaintenanceEquipment(models.Model):
control_system_id = fields.Many2one('sf.machine.control_system', control_system_id = fields.Many2one('sf.machine.control_system',
string="控制系统") string="控制系统")
# 多个机床型号对应一个机床 # 多个机床型号对应一个机床
brand_id = fields.Many2one('sf.machine.brand', string='品牌') brand_id = fields.Many2one('sf.machine.brand', string='品牌', domain="[('tag_ids.name', 'ilike', equipment_type)]")
type_id = fields.Many2one('sf.machine_tool.type', '型号') type_id = fields.Many2one('sf.machine_tool.type', '型号')
state = fields.Selection( state = fields.Selection(
@@ -154,48 +154,48 @@ class SfMaintenanceEquipment(models.Model):
result.append((parameter.id, name)) result.append((parameter.id, name))
return result return result
@api.constrains('rotate_speed') # @api.constrains('rotate_speed')
def _check_rotate_speed(self): # def _check_rotate_speed(self):
if self.rotate_speed <= 0: # if self.rotate_speed <= 0:
raise UserError("转速不能为0") # raise UserError("转速不能为0")
#
@api.constrains('precision') # @api.constrains('precision')
def _check_precision(self): # def _check_precision(self):
if self.precision <= 0.00: # if self.equipment_type == '机床' and self.precision <= 0.00:
raise UserError("加工精度不能为0") # raise UserError("加工精度不能为0")
#
@api.constrains('number_of_knife_library') # @api.constrains('number_of_knife_library')
def _check_number_of_knife_library(self): # def _check_number_of_knife_library(self):
if self.number_of_knife_library <= 0: # if self.equipment_type == '机床' and self.number_of_knife_library <= 0:
raise UserError("刀库数量不能为0") # raise UserError("刀库数量不能为0")
#
@api.constrains('x_axis') # @api.constrains('x_axis')
def _check_x_axis(self): # def _check_x_axis(self):
if self.x_axis <= 0: # if self.equipment_type == '机床' and self.x_axis <= 0:
raise UserError("加工行程里x轴不能为0") # raise UserError("加工行程里x轴不能为0")
#
@api.constrains('y_axis') # @api.constrains('y_axis')
def _check_y_axis(self): # def _check_y_axis(self):
if self.y_axis <= 0: # if self.equipment_type == '机床' and self.y_axis <= 0:
raise UserError("加工行程里y轴不能为0") # raise UserError("加工行程里y轴不能为0")
#
@api.constrains('z_axis') # @api.constrains('z_axis')
def _check_z_axis(self): # def _check_z_axis(self):
if self.z_axis <= 0: # if self.equipment_type == '机床' and self.z_axis <= 0:
raise UserError("加工行程里z轴不能为0") # raise UserError("加工行程里z轴不能为0")
#
@api.constrains('b_axis') # @api.constrains('b_axis')
def _check_b_axis(self): # def _check_b_axis(self):
if self.number_of_axles == '四轴': # if self.equipment_type == '机床' and self.number_of_axles == '四轴':
print(self.number_of_axles) # print(self.number_of_axles)
if self.b_axis <= 0: # if self.b_axis <= 0:
raise UserError("加工行程里b轴不能为0") # raise UserError("加工行程里b轴不能为0")
#
@api.constrains('c_axis') # @api.constrains('c_axis')
def _check_c_axis(self): # def _check_c_axis(self):
if self.number_of_axles == '五轴': # if self.equipment_type == '机床' and self.number_of_axles == '五轴':
if self.c_axis <= 0: # if self.c_axis <= 0:
raise UserError("加工行程里c轴不能为0") # raise UserError("加工行程里c轴不能为0")
@api.onchange('type_id') @api.onchange('type_id')
def get_type_info(self): def get_type_info(self):

View File

@@ -57,9 +57,8 @@
<field name="code"/> <field name="code"/>
<field name="equipment_type" invisible="1"/> <field name="equipment_type" invisible="1"/>
<field name="brand_id" attrs="{'invisible': [('equipment_type', '!=', '机床')]}" <field name="brand_id" force_save="1"/>
force_save="1"/> <field name="type_id" attrs="{'required': [('equipment_type', '=', '机床')]}"
<field name="type_id" attrs="{'invisible': [('equipment_type', '!=', '机床')]}" required="1"
domain="[('brand_id', '=', brand_id)]"/> domain="[('brand_id', '=', brand_id)]"/>
<field name="machine_tool_category" readonly="1" attrs="{'invisible': [('type_id', '=', False)]}" <field name="machine_tool_category" readonly="1" attrs="{'invisible': [('type_id', '=', False)]}"
force_save="1"/> force_save="1"/>
@@ -68,113 +67,174 @@
<page string="设备参数" name="sf_equipment" <page string="设备参数" name="sf_equipment"
attrs="{'invisible': [('equipment_type', '!=', '机床')]}"> attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<group> <group>
<div class="bigger">
<group string="基本参数"> <group string="基本参数">
<field name="control_system_id" required="1" options="{'no_create': True}"/> <field name="control_system_id" required="1" options="{'no_create': True}"/>
<label for="workbench_L" string="工作台尺寸(mm)"/> <label for="workbench_L" string="工作台尺寸(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="workbench_L" string="长"/> <label for="workbench_L" string="长"/>
<field name="workbench_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="workbench_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="workbench_W" string="宽"/> <label for="workbench_W" string="宽"/>
<field name="workbench_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="workbench_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
<label for="machine_tool_L" string="机床尺寸(mm)"/> <label for="machine_tool_L" string="机床尺寸(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="machine_tool_L" string="长"/> <label for="machine_tool_L" string="长"/>
<field name="machine_tool_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="machine_tool_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div>
<div>
<label for="machine_tool_W" string="宽"/> <label for="machine_tool_W" string="宽"/>
<field name="machine_tool_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="machine_tool_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<div>
<label for="machine_tool_H" string="高"/> <label for="machine_tool_H" string="高"/>
<field name="machine_tool_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="machine_tool_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
<field name="feed_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="feed_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="precision_min" string="X轴定位精度(mm)"/> <label for="precision_min" string="X轴定位精度(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="precision_min" string="最小(min)"/> <label for="precision_min" string="最小(min)"/>
<field name="precision_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="precision_min" class="o_address_zip"
options="{'format': false}"/> attrs="{'required': [('equipment_type', '=', '机床')]}"
<span>&amp;nbsp;</span>
<label for="precision_max" string="最大(max)"/>
<field name="precision_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
<field name="workpiece_load" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <span>&amp;nbsp;</span>
<field name="number_of_knife_library" attrs="{'required': [('equipment_type', '=', '机床')]}" options="{'format': false}"/> <div>
<label for="precision_max" string="最大(max)"/>
<field name="precision_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
</div>
<field name="workpiece_load"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="number_of_knife_library"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<field name="lead_screw" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="lead_screw" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}" widget="radio" <field name="number_of_axles"
attrs="{'required': [('equipment_type', '=', '机床')]}"
widget="radio"
options="{'horizontal': true}"/> options="{'horizontal': true}"/>
<label for="x_axis" string="加工行程(mm)" <label for="x_axis" string="加工行程(mm)"
attrs="{'invisible': [('number_of_axles', '=', False)]}"/> attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
<div class="test_model" <div class="test_model"
attrs="{'invisible': [('number_of_axles', '=', False)]}"> attrs="{'invisible': [('number_of_axles', '=', False)]}">
<div>
<label for="x_axis" string="x"/> <label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="x_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="y_axis" string="y"/> <label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="y_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="z_axis" string="z"/> <label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="z_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<br></br> <br></br>
<div>
<label for="b_axis" string="b" <label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/> attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_zip" <field name="b_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}" attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="c_axis" string="c" <label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/> attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="c_axis" class="o_address_zip" <field name="c_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}" attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
</group> </group>
</div>
<div class="bigger">
<group string="主轴"> <group string="主轴">
<field name="taper" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="taper" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="rotate_speed" string="主轴转速(r/min)" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="rotate_speed" string="主轴转速(r/min)"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
<field name="heightened_way" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="heightened_way"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="torque" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="torque" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="motor_power" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="motor_power" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/> <label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="distance_min" string="最小min"/> <label for="distance_min" string="最小min"/>
<field name="distance_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="distance_min" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="distance_max" string="最大max"/> <label for="distance_max" string="最大max"/>
<field name="distance_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="distance_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
<field name="guide_rail" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="guide_rail" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group> </group>
</div>
<group string="刀具"> <group string="刀具">
<field name="knife_type" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="knife_type" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="tool_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_long_max" attrs="{'required': [('equipment_type', '=', '机床')]}"/> <field name="tool_long_max"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="tool_diameter_min" string="刀具刀径(mm)"/> <label for="tool_diameter_min" string="刀具刀径(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="tool_diameter_min" string="最小(min)"/> <label for="tool_diameter_min" string="最小(min)"/>
<field name="tool_diameter_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}" <field name="tool_diameter_min" class="o_address_zip"
options="{'format': false}"/> attrs="{'required': [('equipment_type', '=', '机床')]}"
<span>&amp;nbsp;</span>
<label for="tool_diameter_max" string="最大(max)"/>
<field name="tool_diameter_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
<field name="tool_quality_max" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
</group>
<span>&amp;nbsp;</span>
<div>
<label for="tool_diameter_max" string="最大(max)"/>
<field name="tool_diameter_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
</div>
<field name="tool_quality_max"
attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
</group>
</page> </page>
@@ -183,55 +243,77 @@
<group string="AGV基础参数"> <group string="AGV基础参数">
<label for="AGV_L" string="设备尺寸(mm)"/> <label for="AGV_L" string="设备尺寸(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="AGV_L" string="长"/> <label for="AGV_L" string="长"/>
<field name="AGV_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="AGV_W" string="宽"/> <label for="AGV_W" string="宽"/>
<field name="AGV_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="AGV_H" string="高"/> <label for="AGV_H" string="高"/>
<field name="AGV_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
<label for="AGV_goods_L" string="载货尺寸MAX(mm)"/> <label for="AGV_goods_L" string="载货尺寸MAX(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="AGV_goods_L" string="长"/> <label for="AGV_goods_L" string="长"/>
<field name="AGV_goods_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_goods_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="AGV_goods_W" string="宽"/> <label for="AGV_goods_W" string="宽"/>
<field name="AGV_goods_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_goods_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="AGV_goods_H" string="宽"/> <label for="AGV_goods_H" string="宽"/>
<field name="AGV_goods_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_goods_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
<label for="AGV_velocity" string=""/> <label for="AGV_velocity" string=""/>
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="AGV_velocity" string="标准速度"/> <label for="AGV_velocity" string="标准速度"/>
<field name="AGV_velocity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_velocity" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>m/S&amp;nbsp;</span> <span>m/S&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_velocity_min" string="标准速度(最小)"/> <label for="AGV_velocity_min" string="标准速度(最小)"/>
<field name="AGV_velocity_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_velocity_min" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>m/S&amp;nbsp;</span> <span>m/S&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_velocity_max" string="标准速度(最大)"/> <label for="AGV_velocity_max" string="标准速度(最大)"/>
<field name="AGV_velocity_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_velocity_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>m/S&amp;nbsp;</span> <span>m/S&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_Lifting_height" string="升降高度(max)"/> <label for="AGV_Lifting_height" string="升降高度(max)"/>
<field name="AGV_Lifting_height" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_Lifting_height" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
@@ -242,26 +324,30 @@
<div> <div>
<label for="AGV_ground_clearance" string="最小离地高度"/> <label for="AGV_ground_clearance" string="最小离地高度"/>
<field name="AGV_ground_clearance" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_ground_clearance" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_turning_radius" string="最小转弯半径"/> <label for="AGV_turning_radius" string="最小转弯半径"/>
<field name="AGV_turning_radius" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_turning_radius" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_gradeability_max" string="最大爬坡度"/> <label for="AGV_gradeability_max" string="最大爬坡度"/>
<field name="AGV_gradeability_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_gradeability_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_parking_accuracy" string="停车精度"/> <label for="AGV_parking_accuracy" string="停车精度"/>
<field name="AGV_parking_accuracy" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_parking_accuracy" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
@@ -275,14 +361,16 @@
<div> <div>
<label for="AGV_load_weight_max" string="最大负载重量"/> <label for="AGV_load_weight_max" string="最大负载重量"/>
<field name="AGV_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_load_weight_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kg&amp;nbsp;</span> <span>kg&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_weight" string="本体总重量"/> <label for="AGV_weight" string="本体总重量"/>
<field name="AGV_weight" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_weight" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kg&amp;nbsp;</span> <span>kg&amp;nbsp;</span>
</div> </div>
@@ -290,7 +378,8 @@
<div> <div>
<label for="AGV_job_duration" string="连续作业时长"/> <label for="AGV_job_duration" string="连续作业时长"/>
<field name="AGV_job_duration" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_job_duration" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>h&amp;nbsp;</span> <span>h&amp;nbsp;</span>
</div> </div>
@@ -298,7 +387,8 @@
<div> <div>
<label for="AGV_transfer_mode" string="移载方式"/> <label for="AGV_transfer_mode" string="移载方式"/>
<field name="AGV_transfer_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_transfer_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
@@ -326,7 +416,8 @@
<div> <div>
<label for="AGV_drive_motor_power" string="驱动电机功率"/> <label for="AGV_drive_motor_power" string="驱动电机功率"/>
<field name="AGV_drive_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_drive_motor_power" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kw&amp;nbsp;</span> <span>kw&amp;nbsp;</span>
</div> </div>
@@ -334,7 +425,8 @@
<div> <div>
<label for="AGV_hoist_motor_power" string="提升电机功率"/> <label for="AGV_hoist_motor_power" string="提升电机功率"/>
<field name="AGV_hoist_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_hoist_motor_power" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>i&amp;nbsp;</span> <span>i&amp;nbsp;</span>
</div> </div>
@@ -342,7 +434,8 @@
<div> <div>
<label for="AGV_drive_motor_speed_ratio" string="驱动电机速比"/> <label for="AGV_drive_motor_speed_ratio" string="驱动电机速比"/>
<field name="AGV_drive_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_drive_motor_speed_ratio" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kw&amp;nbsp;</span> <span>kw&amp;nbsp;</span>
</div> </div>
@@ -354,14 +447,16 @@
<div> <div>
<label for="AGV_veer_motor_power" string="转向电机功率"/> <label for="AGV_veer_motor_power" string="转向电机功率"/>
<field name="AGV_veer_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_veer_motor_power" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kw&amp;nbsp;</span> <span>kw&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="AGV_veer_motor_speed_ratio" string="转向电机速比"/> <label for="AGV_veer_motor_speed_ratio" string="转向电机速比"/>
<field name="AGV_veer_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_veer_motor_speed_ratio" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>i&amp;nbsp;</span> <span>i&amp;nbsp;</span>
</div> </div>
@@ -369,7 +464,8 @@
<div> <div>
<label for="AGV_move_motor_power" string="前移电机功率"/> <label for="AGV_move_motor_power" string="前移电机功率"/>
<field name="AGV_move_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_move_motor_power" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kw&amp;nbsp;</span> <span>kw&amp;nbsp;</span>
</div> </div>
@@ -377,7 +473,8 @@
<div> <div>
<label for="AGV_move_motor_speed_ratio" string="前移电机速比"/> <label for="AGV_move_motor_speed_ratio" string="前移电机速比"/>
<field name="AGV_move_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_move_motor_speed_ratio" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>i&amp;nbsp;</span> <span>i&amp;nbsp;</span>
</div> </div>
@@ -393,27 +490,33 @@
<div> <div>
<label for="AGV_drive_mode" string="驱动方式"/> <label for="AGV_drive_mode" string="驱动方式"/>
<field name="AGV_drive_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_drive_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
<div>
<label for="AGV_navigation_mode" string="导航方式"/> <label for="AGV_navigation_mode" string="导航方式"/>
<field name="AGV_navigation_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_navigation_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<div> <div>
<label for="AGV_communication_mode" string="通讯方式"/> <label for="AGV_communication_mode" string="通讯方式"/>
<field name="AGV_communication_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_communication_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
<div> <div>
<label for="AGV_direction_travel" string="行走方向"/> <label for="AGV_direction_travel" string="行走方向"/>
<field name="AGV_direction_travel" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_direction_travel" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
@@ -424,40 +527,57 @@
<div class="test_model"> <div class="test_model">
<div>
<label for="AGV_power_requirements" string="电源要求"/> <label for="AGV_power_requirements" string="电源要求"/>
<field name="AGV_power_requirements" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_power_requirements" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<div>
<label for="AGV_charge_mode" string="充电方式"/> <label for="AGV_charge_mode" string="充电方式"/>
<field name="AGV_charge_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_charge_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<div>
<label for="AGV_security" string="安全防护"/> <label for="AGV_security" string="安全防护"/>
<field name="AGV_security" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_security" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div> </div>
</div>
<label for="AGV_operating_temperature" string="工作条件"/> <label for="AGV_operating_temperature" string="工作条件"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="AGV_operating_temperature" string="环境温度"/> <label for="AGV_operating_temperature" string="环境温度"/>
<field name="AGV_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_operating_temperature" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div>
<div>
<label for="AGV_operating_humidity" string="环境湿度"/> <label for="AGV_operating_humidity" string="环境湿度"/>
<field name="AGV_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}" <field name="AGV_operating_humidity" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div>
</div> </div>
@@ -469,50 +589,66 @@
<group string="机器人设备参数"> <group string="机器人设备参数">
<label for="robot_gripping_of_workpieces_L" string="抓取工件最大尺寸"/> <label for="robot_gripping_of_workpieces_L" string="抓取工件最大尺寸"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="robot_gripping_of_workpieces_L" string="长"/> <label for="robot_gripping_of_workpieces_L" string="长"/>
<field name="robot_gripping_of_workpieces_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_gripping_of_workpieces_L" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div>
<div>
<label for="robot_gripping_of_workpieces_W" string="宽"/> <label for="robot_gripping_of_workpieces_W" string="宽"/>
<field name="robot_gripping_of_workpieces_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_gripping_of_workpieces_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div>
<div>
<label for="robot_gripping_of_workpieces_H" string="高"/> <label for="robot_gripping_of_workpieces_H" string="高"/>
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_gripping_of_workpieces_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
</div>
<label for="robot_radius_of_the_boom" string=""/> <label for="robot_radius_of_the_boom" string=""/>
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="robot_radius_of_the_boom" string="展臂半径"/> <label for="robot_radius_of_the_boom" string="展臂半径"/>
<field name="robot_radius_of_the_boom" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_radius_of_the_boom" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="robot_load_weight_max" string="最大负载重量"/> <label for="robot_load_weight_max" string="最大负载重量"/>
<field name="robot_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_load_weight_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kg&amp;nbsp;</span> <span>kg&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="robot_gripping_of_workpieces_H" string="本体总重量"/> <label for="robot_gripping_of_workpieces_H" string="本体总重量"/>
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_gripping_of_workpieces_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kg&amp;nbsp;</span> <span>kg&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="robot_repeatable_positioning_accuracy" string="重复定位精度"/> <label for="robot_repeatable_positioning_accuracy" string="重复定位精度"/>
<field name="robot_repeatable_positioning_accuracy" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_repeatable_positioning_accuracy" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
</div> </div>
<field name = 'robot_axis_num'/> <field name='robot_axis_num'/>
<field name = 'axis_ids' widget="One2many"> <field name='axis_ids' widget="One2many">
<tree editable='bottom'> <tree editable='bottom'>
<field name="name"/> <field name="name"/>
<field name="angle_min"/> <field name="angle_min"/>
@@ -525,44 +661,72 @@
</field> </field>
<label for="robot_track_dimensions_L" string="轨道尺寸"/> <label for="robot_track_dimensions_L" string="轨道尺寸"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="robot_track_dimensions_L" string="长"/> <label for="robot_track_dimensions_L" string="长"/>
<field name="robot_track_dimensions_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_track_dimensions_L" class="o_address_zip"
options="{'format': false}"/> attrs="{'required': [('equipment_type', '=', '机器人')]}"
<span>mm&amp;nbsp;</span>
<label for="robot_track_dimensions_W" string="宽"/>
<field name="robot_track_dimensions_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_track_dimensions_H" string="高"/>
<field name="robot_track_dimensions_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
<div>
<label for="robot_track_dimensions_W" string="宽"/>
<field name="robot_track_dimensions_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="robot_track_dimensions_H" string="高"/>
<field name="robot_track_dimensions_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
</div>
<label for="control_system_id" string=""/> <label for="control_system_id" string=""/>
<div class="test_model"> <div class="test_model">
<div>
<label for="control_system_id" string="控制系统"/> <label for="control_system_id" string="控制系统"/>
<field name="control_system_id" class="o_address_zip" required="1" <field name="control_system_id" class="o_address_zip" required="1"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="robot_drive_mode" string="驱动方式"/> <label for="robot_drive_mode" string="驱动方式"/>
<field name="robot_drive_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_drive_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<div>
<label for="robot_installation_method" string="安装方式"/> <label for="robot_installation_method" string="安装方式"/>
<field name="robot_installation_method" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_installation_method" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
</div>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<label for="robot_operating_temperature" string="工作条件"/> <label for="robot_operating_temperature" string="工作条件"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="robot_operating_temperature" string="环境温度"/> <label for="robot_operating_temperature" string="环境温度"/>
<field name="robot_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_operating_temperature" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div>
<div>
<label for="robot_operating_humidity" string="环境湿度"/> <label for="robot_operating_humidity" string="环境湿度"/>
<field name="robot_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}" <field name="robot_operating_humidity" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div>
</div> </div>
@@ -574,51 +738,72 @@
<group string="三元检测设备基础参数"> <group string="三元检测设备基础参数">
<label for="detect_L" string="设备尺寸(mm)"/> <label for="detect_L" string="设备尺寸(mm)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="detect_L" string="长"/> <label for="detect_L" string="长"/>
<field name="detect_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_L" class="o_address_zip"
options="{'format': false}"/> attrs="{'required': [('equipment_type', '=', '检测设备')]}"
<span>mm&amp;nbsp;</span>
<label for="detect_W" string="宽"/>
<field name="detect_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_H" string="高"/>
<field name="detect_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
<div>
<label for="detect_W" string="宽"/>
<field name="detect_W" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="detect_H" string="高"/>
<field name="detect_H" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
</div>
<label for="detect_x_axis" string="测量范围(max)"/> <label for="detect_x_axis" string="测量范围(max)"/>
<div class="test_model"> <div class="test_model">
<div>
<label for="detect_x_axis" string="X轴"/> <label for="detect_x_axis" string="X轴"/>
<field name="detect_x_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_x_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div>
<div>
<label for="detect_y_axis" string="Y轴"/> <label for="detect_y_axis" string="Y轴"/>
<field name="detect_y_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_y_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div>
<div>
<label for="detect_z_axis" string="Z轴"/> <label for="detect_z_axis" string="Z轴"/>
<field name="detect_z_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_z_axis" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
</div>
<label for="detect_precision" string=""/> <label for="detect_precision" string=""/>
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="detect_precision" string="测量精度"/> <label for="detect_precision" string="测量精度"/>
<field name="detect_precision" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_precision" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>μm&amp;nbsp;</span> <span>μm&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_measurement_mode" string="测量方式"/> <label for="detect_measurement_mode" string="测量方式"/>
<field name="detect_measurement_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_measurement_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_resolution" string="分辨率"/> <label for="detect_resolution" string="分辨率"/>
<field name="detect_resolution" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_resolution" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
@@ -627,19 +812,22 @@
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="detect_load_weight_max" string="最大负载重量"/> <label for="detect_load_weight_max" string="最大负载重量"/>
<field name="detect_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_load_weight_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kg&amp;nbsp;</span> <span>kg&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_weight" string="本体总重量"/> <label for="detect_weight" string="本体总重量"/>
<field name="detect_weight" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_weight" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>kg&amp;nbsp;</span> <span>kg&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_measurement_length" string="深孔测量长度(max)"/> <label for="detect_measurement_length" string="深孔测量长度(max)"/>
<field name="detect_measurement_length" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_measurement_length" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
@@ -656,13 +844,15 @@
</div> </div>
<div> <div>
<label for="detect_control_mode" string="控制方式"/> <label for="detect_control_mode" string="控制方式"/>
<field name="detect_control_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_control_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_balance_mode_for_Z" string="Z轴平衡方式"/> <label for="detect_balance_mode_for_Z" string="Z轴平衡方式"/>
<field name="detect_balance_mode_for_Z" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_balance_mode_for_Z" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
@@ -671,19 +861,22 @@
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="detect_zoom_objective_magnification" string="变焦物镜倍率"/> <label for="detect_zoom_objective_magnification" string="变焦物镜倍率"/>
<field name="detect_zoom_objective_magnification" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_zoom_objective_magnification" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_magnification" string="放大倍率"/> <label for="detect_magnification" string="放大倍率"/>
<field name="detect_magnification" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_magnification" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_working_distance" string="工作距离"/> <label for="detect_working_distance" string="工作距离"/>
<field name="detect_working_distance" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_working_distance" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
@@ -692,23 +885,27 @@
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="detect_locking_mode" string="锁紧方式"/> <label for="detect_locking_mode" string="锁紧方式"/>
<field name="detect_locking_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_locking_mode" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_pressurized_air" string="压缩空气"/> <label for="detect_pressurized_air" string="压缩空气"/>
<field name="detect_pressurized_air" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_pressurized_air" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_object_field_of_view_max" string="物方视场:"/> <label for="detect_object_field_of_view_max" string="物方视场:"/>
<span>最小&amp;nbsp;</span> <span>最小&amp;nbsp;</span>
<field name="detect_object_field_of_view_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_object_field_of_view_max" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm~&amp;nbsp;</span> <span>mm~&amp;nbsp;</span>
<field name="detect_object_field_of_view_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_object_field_of_view_min" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>mm&amp;nbsp;</span> <span>mm&amp;nbsp;</span>
</div> </div>
@@ -717,19 +914,22 @@
<div class="test_model"> <div class="test_model">
<div> <div>
<label for="detect_operating_temperature" string="环境温度"/> <label for="detect_operating_temperature" string="环境温度"/>
<field name="detect_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_operating_temperature" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_operating_humidity" string="环境湿度"/> <label for="detect_operating_humidity" string="环境湿度"/>
<field name="detect_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_operating_humidity" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>°&amp;nbsp;</span> <span>°&amp;nbsp;</span>
</div> </div>
<div> <div>
<label for="detect_power_requirements" string="电源要求"/> <label for="detect_power_requirements" string="电源要求"/>
<field name="detect_power_requirements" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}" <field name="detect_power_requirements" class="o_address_zip"
attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/> options="{'format': false}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
</div> </div>
@@ -953,11 +1153,11 @@
<field name="name">maintenance.equipment.image.tree</field> <field name="name">maintenance.equipment.image.tree</field>
<field name="model">maintenance.equipment.image</field> <field name="model">maintenance.equipment.image</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="能力特征库" editable="bottom" delete="0" create="0" > <tree string="能力特征库" editable="bottom" delete="0" create="0">
<field name="name" readonly="1"/> <field name="name" readonly="1"/>
<field name="type" readonly="1"/> <field name="type" readonly="1"/>
<field name="image" widget="image" readonly="1"/> <field name="image" widget="image" readonly="1"/>
<field name="equipment_id" /> <field name="equipment_id"/>
<field name="active" invisible="1"/> <field name="active" invisible="1"/>
</tree> </tree>
</field> </field>

View File

@@ -66,6 +66,8 @@ class ResConfigSettings(models.TransientModel):
self.env['sf.machine_tool.type'].sync_all_machine_tool_type() self.env['sf.machine_tool.type'].sync_all_machine_tool_type()
_logger.info("同步资源库机床型号完成") _logger.info("同步资源库机床型号完成")
self.env['maintenance.equipment.image'].sync_all_maintenance_equipment_image()
_logger.info("同步能力特征库")
except Exception as e: except Exception as e:
_logger.info("捕获错误信息:%s" % e) _logger.info("捕获错误信息:%s" % e)
raise ValidationError("数据错误导致同步失败,请联系管理员") raise ValidationError("数据错误导致同步失败,请联系管理员")

View File

@@ -756,7 +756,7 @@ class FunctionalToolAssembly(models.Model):
domain=[('cutting_tool_material_id', '=', '整体式刀具')]) domain=[('cutting_tool_material_id', '=', '整体式刀具')])
integral_code = fields.Char('整体式刀具序列号', readonly=True) integral_code = fields.Char('整体式刀具序列号', readonly=True)
integral_name = fields.Char('整体式刀具名称', readonly=True) integral_name = fields.Char('整体式刀具名称', readonly=True)
sf_tool_brand_id_1 = fields.Many2one('sf.machine.brand', '整体式刀具品牌', readonly=True) sf_tool_brand_id_1 = fields.Many2one('sf.machine.brand', '整体式刀具品牌', readonly=True, domain="[('tag_ids.name', 'ilike', '刀具')]")
# 刀片型号 # 刀片型号
cutting_tool_blade_model_id = fields.Many2one('product.product', string='刀片型号', readonly=True, cutting_tool_blade_model_id = fields.Many2one('product.product', string='刀片型号', readonly=True,
domain=[('cutting_tool_material_id', '=', '刀片')]) domain=[('cutting_tool_material_id', '=', '刀片')])

View File

@@ -19,7 +19,7 @@ class SfToolMaterialSearch(models.Model):
mrs_cutting_tool_material_name = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料名称', mrs_cutting_tool_material_name = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料名称',
store=True) store=True)
cutting_tool_type = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料类型', store=True) cutting_tool_type = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料类型', store=True)
mrs_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌', required=True) mrs_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌', required=True, domain="[('tag_ids.name', 'ilike', '刀具')]")
# 关联刀具型号 # 关联刀具型号
# mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号') # mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号')