设备类别参数根据不同类别必填 设备增加刀具库位table 并自动生成

This commit is contained in:
qihao.gong@jikimo.com
2023-10-11 14:45:35 +08:00
parent b9d6e0ea35
commit b1d2cd1ceb
6 changed files with 202 additions and 104 deletions

View File

@@ -36,6 +36,7 @@ class SfMaintenanceEquipment(models.Model):
num = "%04d" % m
return num
equipment_maintenance_standards_ids = fields.Many2many('equipment.maintenance.standards',
'sf_maintenance_equipment_ids', string='设备维保标准')
eq_maintenance_id = fields.Many2one('equipment.maintenance.standards', string='设备保养标准',

View File

@@ -73,105 +73,105 @@
<label for="workbench_L" string="工作台尺寸(mm)"/>
<div class="test_model">
<label for="workbench_L" string="长"/>
<field name="workbench_L" class="o_address_zip" required="1"
<field name="workbench_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="workbench_W" string="宽"/>
<field name="workbench_W" class="o_address_zip" required="1"
<field name="workbench_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<label for="machine_tool_L" string="机床尺寸(mm)"/>
<div class="test_model">
<label for="machine_tool_L" string="长"/>
<field name="machine_tool_L" class="o_address_zip" required="1"
<field name="machine_tool_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="machine_tool_W" string="宽"/>
<field name="machine_tool_W" class="o_address_zip" required="1"
<field name="machine_tool_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<label for="machine_tool_H" string="高"/>
<field name="machine_tool_H" class="o_address_zip" required="1"
<field name="machine_tool_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="feed_speed" required="1"/>
<field name="feed_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="precision_min" string="X轴定位精度(mm)"/>
<div class="test_model">
<label for="precision_min" string="最小(min)"/>
<field name="precision_min" class="o_address_zip" required="1"
<field name="precision_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="precision_max" string="最大(max)"/>
<field name="precision_max" class="o_address_zip" required="1"
<field name="precision_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="workpiece_load" required="1"/>
<field name="number_of_knife_library" required="1" options="{'format': false}"/>
<field name="lead_screw" required="1"/>
<field name="number_of_axles" required="1" widget="radio"
<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="number_of_axles" attrs="{'required': [('equipment_type', '=', '机床')]}" widget="radio"
options="{'horizontal': true}"/>
<label for="x_axis" string="加工行程(mm)"
attrs="{'invisible': [('number_of_axles', '=', False)]}"/>
<div class="test_model"
attrs="{'invisible': [('number_of_axles', '=', False)]}">
<label for="x_axis" string="x"/>
<field name="x_axis" class="o_address_zip" required="1"
<field name="x_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="y_axis" string="y"/>
<field name="y_axis" class="o_address_zip" required="1"
<field name="y_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="z_axis" string="z"/>
<field name="z_axis" class="o_address_zip" required="1"
<field name="z_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<br></br>
<label for="b_axis" string="b"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"/>
<field name="b_axis" class="o_address_zip" required="1"
<field name="b_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="c_axis" string="c"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
<field name="c_axis" class="o_address_zip" required="1"
<field name="c_axis" class="o_address_zip"
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
options="{'format': false}"/>
</div>
</group>
<group string="主轴">
<field name="taper" required="1"/>
<field name="rotate_speed" string="主轴转速(r/min)" required="1"
<field name="taper" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="rotate_speed" string="主轴转速(r/min)" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<field name="heightened_way" required="1"/>
<field name="torque" required="1"/>
<field name="motor_power" required="1"/>
<field name="heightened_way" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="torque" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="motor_power" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
<div class="test_model">
<label for="distance_min" string="最小min"/>
<field name="distance_min" class="o_address_zip" required="1"
<field name="distance_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="distance_max" string="最大max"/>
<field name="distance_max" class="o_address_zip" required="1"
<field name="distance_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="guide_rail" required="1"/>
<field name="guide_rail" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
<group string="刀具">
<field name="knife_type" required="1"/>
<field name="tool_speed" required="1"/>
<field name="tool_long_max" required="1"/>
<field name="knife_type" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_speed" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<field name="tool_long_max" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
<label for="tool_diameter_min" string="刀具刀径(mm)"/>
<div class="test_model">
<label for="tool_diameter_min" string="最小(min)"/>
<field name="tool_diameter_min" class="o_address_zip" required="1"
<field name="tool_diameter_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="tool_diameter_max" string="最大(max)"/>
<field name="tool_diameter_max" class="o_address_zip" required="1"
<field name="tool_diameter_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机床')]}"
options="{'format': false}"/>
</div>
<field name="tool_quality_max" required="1"/>
<field name="tool_quality_max" attrs="{'required': [('equipment_type', '=', '机床')]}"/>
</group>
</group>
@@ -184,54 +184,54 @@
<label for="AGV_L" string="设备尺寸(mm)"/>
<div class="test_model">
<label for="AGV_L" string="长"/>
<field name="AGV_L" class="o_address_zip" required="1"
<field name="AGV_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_W" string="宽"/>
<field name="AGV_W" class="o_address_zip" required="1"
<field name="AGV_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_H" string="高"/>
<field name="AGV_H" class="o_address_zip" required="1"
<field name="AGV_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<label for="AGV_goods_L" string="载货尺寸MAX(mm)"/>
<div class="test_model">
<label for="AGV_goods_L" string="长"/>
<field name="AGV_goods_L" class="o_address_zip" required="1"
<field name="AGV_goods_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_goods_W" string="宽"/>
<field name="AGV_goods_W" class="o_address_zip" required="1"
<field name="AGV_goods_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="AGV_goods_H" string="宽"/>
<field name="AGV_goods_H" class="o_address_zip" required="1"
<field name="AGV_goods_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<label for="AGV_velocity" string=""/>
<div class="test_model">
<div>
<label for="AGV_velocity" string="标准速度"/>
<field name="AGV_velocity" class="o_address_zip" required="1"
<field name="AGV_velocity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>m/S&amp;nbsp;</span>
</div>
<div>
<label for="AGV_velocity_min" string="标准速度(最小)"/>
<field name="AGV_velocity_min" class="o_address_zip" required="1"
<field name="AGV_velocity_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>m/S&amp;nbsp;</span>
</div>
<div>
<label for="AGV_velocity_max" string="标准速度(最大)"/>
<field name="AGV_velocity_max" class="o_address_zip" required="1"
<field name="AGV_velocity_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>m/S&amp;nbsp;</span>
</div>
<div>
<label for="AGV_Lifting_height" string="升降高度(max)"/>
<field name="AGV_Lifting_height" class="o_address_zip" required="1"
<field name="AGV_Lifting_height" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -242,26 +242,26 @@
<div>
<label for="AGV_ground_clearance" string="最小离地高度"/>
<field name="AGV_ground_clearance" class="o_address_zip" required="1"
<field name="AGV_ground_clearance" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="AGV_turning_radius" string="最小转弯半径"/>
<field name="AGV_turning_radius" class="o_address_zip" required="1"
<field name="AGV_turning_radius" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="AGV_gradeability_max" string="最大爬坡度"/>
<field name="AGV_gradeability_max" class="o_address_zip" required="1"
<field name="AGV_gradeability_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
</div>
<div>
<label for="AGV_parking_accuracy" string="停车精度"/>
<field name="AGV_parking_accuracy" class="o_address_zip" required="1"
<field name="AGV_parking_accuracy" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -275,14 +275,14 @@
<div>
<label for="AGV_load_weight_max" string="最大负载重量"/>
<field name="AGV_load_weight_max" class="o_address_zip" required="1"
<field name="AGV_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="AGV_weight" string="本体总重量"/>
<field name="AGV_weight" class="o_address_zip" required="1"
<field name="AGV_weight" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
@@ -290,7 +290,7 @@
<div>
<label for="AGV_job_duration" string="连续作业时长"/>
<field name="AGV_job_duration" class="o_address_zip" required="1"
<field name="AGV_job_duration" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>h&amp;nbsp;</span>
</div>
@@ -298,7 +298,7 @@
<div>
<label for="AGV_transfer_mode" string="移载方式"/>
<field name="AGV_transfer_mode" class="o_address_zip" required="1"
<field name="AGV_transfer_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
@@ -326,7 +326,7 @@
<div>
<label for="AGV_drive_motor_power" string="驱动电机功率"/>
<field name="AGV_drive_motor_power" class="o_address_zip" required="1"
<field name="AGV_drive_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
@@ -334,7 +334,7 @@
<div>
<label for="AGV_hoist_motor_power" string="提升电机功率"/>
<field name="AGV_hoist_motor_power" class="o_address_zip" required="1"
<field name="AGV_hoist_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>i&amp;nbsp;</span>
</div>
@@ -342,7 +342,7 @@
<div>
<label for="AGV_drive_motor_speed_ratio" string="驱动电机速比"/>
<field name="AGV_drive_motor_speed_ratio" class="o_address_zip" required="1"
<field name="AGV_drive_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
@@ -354,14 +354,14 @@
<div>
<label for="AGV_veer_motor_power" string="转向电机功率"/>
<field name="AGV_veer_motor_power" class="o_address_zip" required="1"
<field name="AGV_veer_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
<div>
<label for="AGV_veer_motor_speed_ratio" string="转向电机速比"/>
<field name="AGV_veer_motor_speed_ratio" class="o_address_zip" required="1"
<field name="AGV_veer_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>i&amp;nbsp;</span>
</div>
@@ -369,7 +369,7 @@
<div>
<label for="AGV_move_motor_power" string="前移电机功率"/>
<field name="AGV_move_motor_power" class="o_address_zip" required="1"
<field name="AGV_move_motor_power" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>kw&amp;nbsp;</span>
</div>
@@ -377,7 +377,7 @@
<div>
<label for="AGV_move_motor_speed_ratio" string="前移电机速比"/>
<field name="AGV_move_motor_speed_ratio" class="o_address_zip" required="1"
<field name="AGV_move_motor_speed_ratio" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>i&amp;nbsp;</span>
</div>
@@ -393,27 +393,27 @@
<div>
<label for="AGV_drive_mode" string="驱动方式"/>
<field name="AGV_drive_mode" class="o_address_zip" required="1"
<field name="AGV_drive_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<label for="AGV_navigation_mode" string="导航方式"/>
<field name="AGV_navigation_mode" class="o_address_zip" required="1"
<field name="AGV_navigation_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<div>
<label for="AGV_communication_mode" string="通讯方式"/>
<field name="AGV_communication_mode" class="o_address_zip" required="1"
<field name="AGV_communication_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
<div>
<label for="AGV_direction_travel" string="行走方向"/>
<field name="AGV_direction_travel" class="o_address_zip" required="1"
<field name="AGV_direction_travel" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
@@ -426,19 +426,19 @@
<label for="AGV_power_requirements" string="电源要求"/>
<field name="AGV_power_requirements" class="o_address_zip" required="1"
<field name="AGV_power_requirements" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<label for="AGV_charge_mode" string="充电方式"/>
<field name="AGV_charge_mode" class="o_address_zip" required="1"
<field name="AGV_charge_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<label for="AGV_security" string="安全防护"/>
<field name="AGV_security" class="o_address_zip" required="1"
<field name="AGV_security" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
</div>
@@ -448,14 +448,14 @@
<label for="AGV_operating_temperature" string="环境温度"/>
<field name="AGV_operating_temperature" class="o_address_zip" required="1"
<field name="AGV_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
<label for="AGV_operating_humidity" string="环境湿度"/>
<field name="AGV_operating_humidity" class="o_address_zip" required="1"
<field name="AGV_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', 'AGV小车')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
@@ -470,15 +470,15 @@
<label for="robot_gripping_of_workpieces_L" string="抓取工件最大尺寸"/>
<div class="test_model">
<label for="robot_gripping_of_workpieces_L" string="长"/>
<field name="robot_gripping_of_workpieces_L" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_gripping_of_workpieces_W" string="宽"/>
<field name="robot_gripping_of_workpieces_W" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_W" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_gripping_of_workpieces_H" string="高"/>
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -487,25 +487,25 @@
<div class="test_model">
<div>
<label for="robot_radius_of_the_boom" string="展臂半径"/>
<field name="robot_radius_of_the_boom" class="o_address_zip" required="1"
<field name="robot_radius_of_the_boom" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<div>
<label for="robot_load_weight_max" string="最大负载重量"/>
<field name="robot_load_weight_max" class="o_address_zip" required="1"
<field name="robot_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="robot_gripping_of_workpieces_H" string="本体总重量"/>
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" required="1"
<field name="robot_gripping_of_workpieces_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="robot_repeatable_positioning_accuracy" string="重复定位精度"/>
<field name="robot_repeatable_positioning_accuracy" class="o_address_zip" required="1"
<field name="robot_repeatable_positioning_accuracy" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -526,15 +526,15 @@
<label for="robot_track_dimensions_L" string="轨道尺寸"/>
<div class="test_model">
<label for="robot_track_dimensions_L" string="长"/>
<field name="robot_track_dimensions_L" class="o_address_zip" required="1"
<field name="robot_track_dimensions_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="robot_track_dimensions_W" string="宽"/>
<field name="robot_track_dimensions_W" class="o_address_zip" required="1"
<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" required="1"
<field name="robot_track_dimensions_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -545,22 +545,22 @@
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="robot_drive_mode" string="驱动方式"/>
<field name="robot_drive_mode" class="o_address_zip" required="1"
<field name="robot_drive_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="robot_installation_method" string="安装方式"/>
<field name="robot_installation_method" class="o_address_zip" required="1"
<field name="robot_installation_method" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<label for="robot_operating_temperature" string="工作条件"/>
<div class="test_model">
<label for="robot_operating_temperature" string="环境温度"/>
<field name="robot_operating_temperature" class="o_address_zip" required="1"
<field name="robot_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
<label for="robot_operating_humidity" string="环境湿度"/>
<field name="robot_operating_humidity" class="o_address_zip" required="1"
<field name="robot_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '机器人')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
@@ -575,30 +575,30 @@
<label for="detect_L" string="设备尺寸(mm)"/>
<div class="test_model">
<label for="detect_L" string="长"/>
<field name="detect_L" class="o_address_zip" required="1"
<field name="detect_L" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_W" string="宽"/>
<field name="detect_W" class="o_address_zip" required="1"
<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" required="1"
<field name="detect_H" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
<label for="detect_x_axis" string="测量范围(max)"/>
<div class="test_model">
<label for="detect_x_axis" string="X轴"/>
<field name="detect_x_axis" class="o_address_zip" required="1"
<field name="detect_x_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_y_axis" string="Y轴"/>
<field name="detect_y_axis" class="o_address_zip" required="1"
<field name="detect_y_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
<label for="detect_z_axis" string="Z轴"/>
<field name="detect_z_axis" class="o_address_zip" required="1"
<field name="detect_z_axis" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -606,19 +606,19 @@
<div class="test_model">
<div>
<label for="detect_precision" string="测量精度"/>
<field name="detect_precision" class="o_address_zip" required="1"
<field name="detect_precision" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>μm&amp;nbsp;</span>
</div>
<div>
<label for="detect_measurement_mode" string="测量方式"/>
<field name="detect_measurement_mode" class="o_address_zip" required="1"
<field name="detect_measurement_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_resolution" string="分辨率"/>
<field name="detect_resolution" class="o_address_zip" required="1"
<field name="detect_resolution" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
@@ -627,19 +627,19 @@
<div class="test_model">
<div>
<label for="detect_load_weight_max" string="最大负载重量"/>
<field name="detect_load_weight_max" class="o_address_zip" required="1"
<field name="detect_load_weight_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="detect_weight" string="本体总重量"/>
<field name="detect_weight" class="o_address_zip" required="1"
<field name="detect_weight" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>kg&amp;nbsp;</span>
</div>
<div>
<label for="detect_measurement_length" string="深孔测量长度(max)"/>
<field name="detect_measurement_length" class="o_address_zip" required="1"
<field name="detect_measurement_length" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -656,13 +656,13 @@
</div>
<div>
<label for="detect_control_mode" string="控制方式"/>
<field name="detect_control_mode" class="o_address_zip" required="1"
<field name="detect_control_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_balance_mode_for_Z" string="Z轴平衡方式"/>
<field name="detect_balance_mode_for_Z" class="o_address_zip" required="1"
<field name="detect_balance_mode_for_Z" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
@@ -671,19 +671,19 @@
<div class="test_model">
<div>
<label for="detect_zoom_objective_magnification" string="变焦物镜倍率"/>
<field name="detect_zoom_objective_magnification" class="o_address_zip" required="1"
<field name="detect_zoom_objective_magnification" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_magnification" string="放大倍率"/>
<field name="detect_magnification" class="o_address_zip" required="1"
<field name="detect_magnification" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_working_distance" string="工作距离"/>
<field name="detect_working_distance" class="o_address_zip" required="1"
<field name="detect_working_distance" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -692,23 +692,23 @@
<div class="test_model">
<div>
<label for="detect_locking_mode" string="锁紧方式"/>
<field name="detect_locking_mode" class="o_address_zip" required="1"
<field name="detect_locking_mode" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_pressurized_air" string="压缩空气"/>
<field name="detect_pressurized_air" class="o_address_zip" required="1"
<field name="detect_pressurized_air" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
<div>
<label for="detect_object_field_of_view_max" string="物方视场:"/>
<span>最小&amp;nbsp;</span>
<field name="detect_object_field_of_view_max" class="o_address_zip" required="1"
<field name="detect_object_field_of_view_max" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm~&amp;nbsp;</span>
<field name="detect_object_field_of_view_min" class="o_address_zip" required="1"
<field name="detect_object_field_of_view_min" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>mm&amp;nbsp;</span>
</div>
@@ -717,19 +717,19 @@
<div class="test_model">
<div>
<label for="detect_operating_temperature" string="环境温度"/>
<field name="detect_operating_temperature" class="o_address_zip" required="1"
<field name="detect_operating_temperature" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
</div>
<div>
<label for="detect_operating_humidity" string="环境湿度"/>
<field name="detect_operating_humidity" class="o_address_zip" required="1"
<field name="detect_operating_humidity" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>°&amp;nbsp;</span>
</div>
<div>
<label for="detect_power_requirements" string="电源要求"/>
<field name="detect_power_requirements" class="o_address_zip" required="1"
<field name="detect_power_requirements" class="o_address_zip" attrs="{'required': [('equipment_type', '=', '检测设备')]}"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
</div>
@@ -737,7 +737,7 @@
</group>
</page>
<page string="加工能力">
<page string="加工能力" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<field name='image_id' widget="custom_many2many_checkboxes">