Accept Merge Request #322: (feature/修改机床参数bug -> develop)
Merge Request: 设备看板优化以及表单视图修改 Created By: @龚启豪 Accepted By: @龚启豪 URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/322?initial=true
This commit is contained in:
@@ -14,6 +14,23 @@ div:has(.o_required_modifier)>label::before {
|
|||||||
padding: 0 4px !important;
|
padding: 0 4px !important;
|
||||||
vertical-align: top !important;
|
vertical-align: top !important;
|
||||||
font-size: 1.5rem !important;
|
font-size: 1.5rem !important;
|
||||||
|
}
|
||||||
|
.my-image div {
|
||||||
|
width: 100px !important;
|
||||||
|
height: 130px !important;
|
||||||
|
}
|
||||||
|
.add_flex {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.maintenance_name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.o_kanban_renderer .o_kanban_record .o_kanban_record_has_image_fill .o_kanban_image_fill_left {
|
||||||
|
flex:unset !important;
|
||||||
|
}
|
||||||
|
.o_kanban_renderer .o_kanban_record .o_kanban_record_bottom {
|
||||||
|
margin-top: 5px;
|
||||||
display: inline !important;
|
display: inline !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ class SfMaintenanceEquipment(models.Model):
|
|||||||
active = fields.Boolean('有效', default=True)
|
active = fields.Boolean('有效', default=True)
|
||||||
# 多个型号对应一个机床
|
# 多个型号对应一个机床
|
||||||
machine_tool_id = fields.Many2one('sf.machine_tool', '机床')
|
machine_tool_id = fields.Many2one('sf.machine_tool', '机床')
|
||||||
|
sf_maintenance_logs_ids = fields.One2many('sf.maintenance.logs','maintenance_equipment_id', '设备故障日志')
|
||||||
|
|
||||||
|
|
||||||
def name_get(self):
|
def name_get(self):
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class SfMaintenanceLogs(models.Model):
|
|||||||
name = fields.Char(string='名称')
|
name = fields.Char(string='名称')
|
||||||
type = fields.Selection([('type1', '类型1'), ('type2', '类型2')], string='类型')
|
type = fields.Selection([('type1', '类型1'), ('type2', '类型2')], string='类型')
|
||||||
brand = fields.Many2one('sf.machine.brand', relared='model.brand_id', string='品牌')
|
brand = fields.Many2one('sf.machine.brand', relared='model.brand_id', string='品牌')
|
||||||
model = fields.Many2one('maintenance.equipment', string='设备')
|
maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='设备')
|
||||||
code_location = fields.Char(string='编码位置')
|
code_location = fields.Char(string='编码位置')
|
||||||
fault_type = fields.Selection([('电气类', '电气类'), ('机械类', '机械类'), ('程序类', '程序类'), ('系统类', '系统类')], string='故障类型')
|
fault_type = fields.Selection([('电气类', '电气类'), ('机械类', '机械类'), ('程序类', '程序类'), ('系统类', '系统类')], string='故障类型')
|
||||||
fault_code = fields.Char(string='故障代码')
|
fault_code = fields.Char(string='故障代码')
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="type"/>
|
<field name="type"/>
|
||||||
<field name="brand"/>
|
<field name="brand"/>
|
||||||
<field name="model"/>
|
<field name="maintenance_equipment_id"/>
|
||||||
<field name="code_location"/>
|
<field name="code_location"/>
|
||||||
<field name="fault_type"/>
|
<field name="fault_type"/>
|
||||||
<field name="fault_code"/>
|
<field name="fault_code"/>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="type"/>
|
<field name="type"/>
|
||||||
<field name="brand"/>
|
<field name="brand"/>
|
||||||
<field name="model"/>
|
<field name="maintenance_equipment_id"/>
|
||||||
<field name="code_location"/>
|
<field name="code_location"/>
|
||||||
<field name="fault_type"/>
|
<field name="fault_type"/>
|
||||||
<field name="fault_code"/>
|
<field name="fault_code"/>
|
||||||
@@ -64,13 +64,13 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<search>
|
<search>
|
||||||
<searchpanel>
|
<searchpanel>
|
||||||
<field name="model" icon="fa-building" enable_counters="1"/>
|
<field name="maintenance_equipment_id" icon="fa-building" enable_counters="1"/>
|
||||||
</searchpanel>
|
</searchpanel>
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="type"/>
|
<field name="type"/>
|
||||||
<field name="brand"/>
|
<field name="brand"/>
|
||||||
<field name="model"/>
|
<field name="maintenance_equipment_id"/>
|
||||||
<field name="code_location"/>
|
<field name="code_location"/>
|
||||||
<field name="fault_type"/>
|
<field name="fault_type"/>
|
||||||
<field name="fault_code"/>
|
<field name="fault_code"/>
|
||||||
|
|||||||
@@ -20,131 +20,147 @@
|
|||||||
|
|
||||||
<data>
|
<data>
|
||||||
<xpath expr="//sheet" position="before">
|
<xpath expr="//sheet" position="before">
|
||||||
<!-- <button type="object" class="oe_highlight" name='enroll_machine_tool' string="机床注册"/>-->
|
<header>
|
||||||
<field name="state_zc" widget="radio" options="{'horizontal': true}"/>
|
|
||||||
|
<field name="state" widget="statusbar" options="{'clickable': '1'}"/>
|
||||||
|
</header>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//div[@name='button_box']" position="inside">
|
||||||
|
|
||||||
|
<button name="%(action_maintenance_logs)d"
|
||||||
|
type="action"
|
||||||
|
class="oe_stat_button"
|
||||||
|
context="{'default_sf_maintenance_logs_ids': sf_maintenance_logs_ids}"
|
||||||
|
icon="fa-wrench">
|
||||||
|
<field string="设备故障日志" name="sf_maintenance_logs_ids" widget="statinfo"/>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//field[@name='maintenance_team_id']" position="before">
|
<xpath expr="//field[@name='maintenance_team_id']" position="before">
|
||||||
<field name="machine_tool_picture" widget="image"/>
|
<field name="machine_tool_picture" widget="image"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//field[@name='category_id']" position="after">
|
<xpath expr="//field[@name='category_id']" position="after">
|
||||||
|
<field name="state_zc" readonly="1"/>
|
||||||
<field name="code" readonly="1"/>
|
<field name="code" readonly="1"/>
|
||||||
<field name="state" widget="radio" options="{'horizontal': true}"/>
|
|
||||||
<field name="equipment_type" invisible="1"/>
|
<field name="equipment_type" invisible="1"/>
|
||||||
<field name="brand_id" attrs="{'invisible': [('equipment_type', '!=', '机床')]}"
|
<field name="brand_id" attrs="{'invisible': [('equipment_type', '!=', '机床')]}"
|
||||||
force_save="1"/>
|
force_save="1"/>
|
||||||
<field name="type_id" attrs="{'invisible': [('equipment_type', '!=', '机床')]}" required="1" domain="[('brand_id', '=', brand_id)]"/>
|
<field name="type_id" attrs="{'invisible': [('equipment_type', '!=', '机床')]}" required="1"
|
||||||
|
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"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//page[@name='description']" position="before">
|
<xpath expr="//page[@name='description']" position="before">
|
||||||
<page string="设备参数" name="sf_equipment" attrs="{'invisible': [('type_id', '=', False)]}">
|
<page string="设备参数" name="sf_equipment" attrs="{'invisible': [('type_id', '=', False)]}">
|
||||||
<group>
|
<group>
|
||||||
<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">
|
||||||
<label for="workbench_L" string="长"/>
|
<label for="workbench_L" string="长"/>
|
||||||
<field name="workbench_L" class="o_address_zip" required="1"
|
<field name="workbench_L" class="o_address_zip" required="1"
|
||||||
options="{'format': false}"/>
|
|
||||||
<span>&nbsp;</span>
|
|
||||||
<label for="workbench_W" string="宽"/>
|
|
||||||
<field name="workbench_W" class="o_address_zip" required="1"
|
|
||||||
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"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
<span>&nbsp;</span>
|
|
||||||
<label for="machine_tool_W" string="宽"/>
|
|
||||||
<field name="machine_tool_W" class="o_address_zip" required="1"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
<label for="machine_tool_H" string="高"/>
|
|
||||||
<field name="machine_tool_H" class="o_address_zip" required="1"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
</div>
|
|
||||||
<field name="feed_speed" required="1"/>
|
|
||||||
<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"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
<span>&nbsp;</span>
|
|
||||||
<label for="precision_max" string="最大(max)"/>
|
|
||||||
<field name="precision_max" class="o_address_zip" required="1"
|
|
||||||
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"
|
|
||||||
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"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
<span>&nbsp;</span>
|
|
||||||
<label for="y_axis" string="y"/>
|
|
||||||
<field name="y_axis" class="o_address_zip" required="1"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
<span>&nbsp;</span>
|
|
||||||
<label for="z_axis" string="z"/>
|
|
||||||
<field name="z_axis" class="o_address_zip" required="1"
|
|
||||||
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"
|
|
||||||
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
<span>&nbsp;</span>
|
|
||||||
<label for="c_axis" string="c"
|
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
|
|
||||||
<field name="c_axis" class="o_address_zip" required="1"
|
|
||||||
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"
|
|
||||||
options="{'format': false}"/>
|
|
||||||
</div>
|
|
||||||
</group>
|
|
||||||
<group string="主轴">
|
|
||||||
<field name="taper" required="1"/>
|
|
||||||
<field name="rotate_speed" string="主轴转速(min/s)" required="1"
|
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
<field name="heightened_way" required="1"/>
|
<span>&nbsp;</span>
|
||||||
<field name="torque" required="1"/>
|
<label for="workbench_W" string="宽"/>
|
||||||
<field name="motor_power" required="1"/>
|
<field name="workbench_W" class="o_address_zip" required="1"
|
||||||
<label for="distance_min" string="主轴端面-工作台距离(mm)"/>
|
options="{'format': false}"/>
|
||||||
<div class="test_model">
|
</div>
|
||||||
<label for="distance_min" string="最小(min)"/>
|
<label for="machine_tool_L" string="机床尺寸(mm)"/>
|
||||||
<field name="distance_min" class="o_address_zip" required="1"
|
<div class="test_model">
|
||||||
options="{'format': false}"/>
|
<label for="machine_tool_L" string="长"/>
|
||||||
<span>&nbsp;</span>
|
<field name="machine_tool_L" class="o_address_zip" required="1"
|
||||||
<label for="distance_max" string="最大(max)"/>
|
options="{'format': false}"/>
|
||||||
<field name="distance_max" class="o_address_zip" required="1"
|
<span>&nbsp;</span>
|
||||||
options="{'format': false}"/>
|
<label for="machine_tool_W" string="宽"/>
|
||||||
</div>
|
<field name="machine_tool_W" class="o_address_zip" required="1"
|
||||||
<field name="guide_rail" required="1"/>
|
options="{'format': false}"/>
|
||||||
</group>
|
<label for="machine_tool_H" string="高"/>
|
||||||
<group string="刀具">
|
<field name="machine_tool_H" class="o_address_zip" required="1"
|
||||||
<field name="knife_type" required="1"/>
|
options="{'format': false}"/>
|
||||||
<field name="tool_speed" required="1"/>
|
</div>
|
||||||
<field name="tool_long_max" required="1"/>
|
<field name="feed_speed" required="1"/>
|
||||||
<label for="tool_diameter_min" string="刀具刀径(mm)"/>
|
<label for="precision_min" string="X轴定位精度(mm)"/>
|
||||||
<div class="test_model">
|
<div class="test_model">
|
||||||
<label for="tool_diameter_min" string="最小(min)"/>
|
<label for="precision_min" string="最小(min)"/>
|
||||||
<field name="tool_diameter_min" class="o_address_zip" required="1"
|
<field name="precision_min" class="o_address_zip" required="1"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
<span>&nbsp;</span>
|
<span>&nbsp;</span>
|
||||||
<label for="tool_diameter_max" string="最大(max)"/>
|
<label for="precision_max" string="最大(max)"/>
|
||||||
<field name="tool_diameter_max" class="o_address_zip" required="1"
|
<field name="precision_max" class="o_address_zip" required="1"
|
||||||
options="{'format': false}"/>
|
options="{'format': false}"/>
|
||||||
</div>
|
</div>
|
||||||
<field name="tool_quality_max" required="1"/>
|
<field name="workpiece_load" required="1"/>
|
||||||
</group>
|
<field name="number_of_knife_library" required="1" options="{'format': false}"/>
|
||||||
</group>
|
<field name="lead_screw" required="1"/>
|
||||||
|
<field name="number_of_axles" required="1" 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"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="y_axis" string="y"/>
|
||||||
|
<field name="y_axis" class="o_address_zip" required="1"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="z_axis" string="z"/>
|
||||||
|
<field name="z_axis" class="o_address_zip" required="1"
|
||||||
|
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"
|
||||||
|
attrs="{'invisible': [('number_of_axles', '=', '三轴')]}"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="c_axis" string="c"
|
||||||
|
attrs="{'invisible': [('number_of_axles', 'in', ['三轴','四轴'])]}"/>
|
||||||
|
<field name="c_axis" class="o_address_zip" required="1"
|
||||||
|
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"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
<field name="heightened_way" required="1"/>
|
||||||
|
<field name="torque" required="1"/>
|
||||||
|
<field name="motor_power" required="1"/>
|
||||||
|
<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"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="distance_max" string="最大(max)"/>
|
||||||
|
<field name="distance_max" class="o_address_zip" required="1"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
</div>
|
||||||
|
<field name="guide_rail" required="1"/>
|
||||||
|
</group>
|
||||||
|
<group string="刀具">
|
||||||
|
<field name="knife_type" required="1"/>
|
||||||
|
<field name="tool_speed" required="1"/>
|
||||||
|
<field name="tool_long_max" required="1"/>
|
||||||
|
<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"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
<span>&nbsp;</span>
|
||||||
|
<label for="tool_diameter_max" string="最大(max)"/>
|
||||||
|
<field name="tool_diameter_max" class="o_address_zip" required="1"
|
||||||
|
options="{'format': false}"/>
|
||||||
|
</div>
|
||||||
|
<field name="tool_quality_max" required="1"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
|
||||||
</page>
|
</page>
|
||||||
@@ -196,6 +212,8 @@
|
|||||||
<xpath expr="//field[@name='category_id']" position="after">
|
<xpath expr="//field[@name='category_id']" position="after">
|
||||||
<searchpanel>
|
<searchpanel>
|
||||||
<field name="category_id" icon="fa-building" enable_counters="1"/>
|
<field name="category_id" icon="fa-building" enable_counters="1"/>
|
||||||
|
<field name="state" icon="fa-building" enable_counters="1"/>
|
||||||
|
<field name="state_zc" icon="fa-building" enable_counters="1"/>
|
||||||
</searchpanel>
|
</searchpanel>
|
||||||
</xpath>
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
@@ -249,6 +267,52 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="sf_maintenance_equipment_view_kanban_inherit_hr" model="ir.ui.view">
|
||||||
|
<field name="name">sf.maintenance.equipment.view.kanban.inherit.hr</field>
|
||||||
|
<field name="model">maintenance.equipment</field>
|
||||||
|
<field name="inherit_id" ref="maintenance.hr_equipment_view_kanban"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='activity_state']" position="before">
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="machine_tool_picture"/>
|
||||||
|
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//templates" position="inside">
|
||||||
|
<t t-name="kanban-box">
|
||||||
|
<div t-attf-class="oe_kanban_global_click o_kanban_record_has_image_fill o_hr_kanban_record oe_kanban_card oe_kanban_global_click
|
||||||
|
#{record.state.raw_value == '正常' ? 'kanban_color_1' : ''}
|
||||||
|
#{record.state.raw_value == '故障' ? 'kanban_color_2' : ''}
|
||||||
|
#{record.state.raw_value == '不可用' ? 'kanban_color_3' : ''}">
|
||||||
|
|
||||||
|
<field name="machine_tool_picture" class="o_kanban_image_fill_left d-block my-image"
|
||||||
|
preview_image="image_128" widget="background_image"/>
|
||||||
|
<!-- <field name="machine_tool_picture" widget="image" options="{'previewImage': false}"/>-->
|
||||||
|
<div class="add_flex">
|
||||||
|
<div class="o_kanban_card_header">
|
||||||
|
<div class="o_kanban_card_header_title maintenance_name">
|
||||||
|
<field name="name"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 内容 -->
|
||||||
|
<div class="o_kanban_record_bottom state_zc">
|
||||||
|
<field name="state_zc"/>
|
||||||
|
</div>
|
||||||
|
<div class="o_kanban_record_bottom state_zc">
|
||||||
|
<field name="state"/>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="o_kanban_record_bottom">-->
|
||||||
|
<!-- <field name="factory_id"/>-->
|
||||||
|
<!-- <span> | </span>-->
|
||||||
|
<!-- <field name="supplier_id"/>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="menu_equipment_form1"
|
id="menu_equipment_form1"
|
||||||
name="设备清单"
|
name="设备清单"
|
||||||
|
|||||||
Reference in New Issue
Block a user