diff --git a/jikimo_frontend/static/src/scss/custom_style.scss b/jikimo_frontend/static/src/scss/custom_style.scss index 5d660025..eddf019b 100644 --- a/jikimo_frontend/static/src/scss/custom_style.scss +++ b/jikimo_frontend/static/src/scss/custom_style.scss @@ -132,11 +132,11 @@ td.o_required_modifier { //font-weight: bold; } -.text-truncate { - overflow: unset !important; - text-overflow: unset !important; - white-space: nowrap!important; -} +//.text-truncate { +// overflow: unset !important; +// text-overflow: unset !important; +// white-space: nowrap!important; +//} .o_list_renderer .o_list_table tbody > tr > td:not(.o_list_record_selector):not(.o_handle_cell):not(.o_list_button):not(.o_list_record_remove) { white-space: nowrap !important; @@ -383,7 +383,9 @@ div:has(.o_required_modifier) > label::before { } } } - +.oe_kanban_details li.o_text_overflow { + display: block; +} .o_stock_kanban .o_kanban_card_content { .row { align-items: center; @@ -411,4 +413,19 @@ div:has(.o_required_modifier) > label::before { .o_inner_group.processingMethod { grid-template-columns: auto; } +} + +// 设置所有表格序号列padding为0 +.o_form_view .o_notebook > .tab-content > .tab-pane > :first-child:not(.o_group) .o_field_x2many.o_field_x2many_list tr > :first-child, .o_form_view .o_notebook > .tab-content > .tab-pane > :first-child.o_invisible_modifier + .o_field_widget .o_field_x2many.o_field_x2many_list tr > :first-child { + padding: 0; + text-align: center; +} + +// 设置剩余number类型数据表格列 left +.o_list_renderer .o_list_table thead .o_list_number_th { + text-align:left; +} + +.o_list_renderer .flex-row-reverse { + flex-direction: unset!important; } \ No newline at end of file diff --git a/jikimo_frontend/static/src/scss/rowno_in_tree.scss b/jikimo_frontend/static/src/scss/rowno_in_tree.scss index c244ad7d..5f8a2648 100644 --- a/jikimo_frontend/static/src/scss/rowno_in_tree.scss +++ b/jikimo_frontend/static/src/scss/rowno_in_tree.scss @@ -1,4 +1,4 @@ .row_no { - width: 3.2% !important; + width: 35px !important; vertical-align: middle; } diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index e2fb731c..59ad967a 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -23,6 +23,7 @@ 'views/tool_basic_param.xml', 'views/tool_menu.xml', 'views/menu_fixture_view.xml', + 'views/change_base_view.xml', ], 'demo': [ diff --git a/sf_base/models/base.py b/sf_base/models/base.py index 36a39f49..a2565d6d 100644 --- a/sf_base/models/base.py +++ b/sf_base/models/base.py @@ -92,7 +92,7 @@ class MachineTool(models.Model): type_id = fields.Many2one('sf.machine_tool.type', '型号') brand_id = fields.Many2one('sf.machine.brand', string='品牌') state = fields.Selection( - [("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")], + [("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"),("空闲", "空闲"),("封存(报废)", "封存(报废)")], default='正常', string="机床状态") # 0606新增字段 machine_tool_picture = fields.Binary('图片') diff --git a/sf_base/models/basic_parameters_fixture.py b/sf_base/models/basic_parameters_fixture.py index 57d55bde..a1b1a9a6 100644 --- a/sf_base/models/basic_parameters_fixture.py +++ b/sf_base/models/basic_parameters_fixture.py @@ -16,7 +16,7 @@ class BasicParametersFixture(models.Model): weight = fields.Float('重量(mm)', digits=(16, 2)) orientation_dish_diameter = fields.Float('定位盘直径(mm)', digits=(16, 2)) clamping_diameter = fields.Float('装夹直径(mm)', digits=(16, 2)) - clamping_num = fields.Selection([('1', '1'), ('2', '2'), ('4', '4'), ('6', '6'), ('8', '8')], string='夹装单元数') + clamping_num = fields.Selection([('1', '1'), ('2', '2'), ('4', '4'), ('6', '6'), ('8', '8')], string='装夹单元数') chucking_power_max = fields.Float('最大夹持力(KN)', digits=(16, 2)) repeated_positioning_accuracy = fields.Char('重复定位精度(mm)', size=20) boolean_transposing_hole = fields.Boolean('是否有转位孔') @@ -65,4 +65,177 @@ class BasicParametersFixture(models.Model): # '三爪卡盘' 字段 mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2)) - centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2)) \ No newline at end of file + centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2)) + + def _json_zero_chuck_param(self, obj): + zero_chuck_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'orientation_dish_diameter': obj['orientation_dish_diameter'], + 'clamping_diameter': obj['clamping_diameter'], + 'clamping_num': obj['clamping_num'], + 'chucking_power_max': obj['chucking_power_max'], + 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], + 'boolean_transposing_hole': obj['boolean_transposing_hole'], + 'unlocking_method': obj['unlocking_method'], + 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'rigidity': obj['rigidity'], + 'materials_model_id': obj['materials_model_id'], + 'machine_tool_type_id': obj['machine_tool_type_id'], + }) + return zero_chuck_param_str + + def _json_zero_tray_param(self, obj): + zero_tray_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'clamping_diameter': obj['clamping_diameter'], + 'connector_diameter': obj['connector_diameter'], + 'chucking_power_max': obj['chucking_power_max'], + 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], + 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], + 'way_to_install': obj['way_to_install'], + 'type_of_drive': obj['type_of_drive'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': obj['materials_model_id'], + 'rigidity': obj['rigidity'], + }) + return zero_tray_param_str + + def _json_pneumatic_fixture_param(self, obj): + pneumatic_fixture_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'rated_air_pressure': obj['rated_air_pressure'], + 'materials_model_id': obj['materials_model_id'], + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': obj['interface_materials_model_id'], + 'type_of_drive': obj['type_of_drive'], + }) + return pneumatic_fixture_param_str + + def _json_jaw_vice_fixture_param(self, obj): + jaw_vice_fixture_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'transverse_groove': obj['transverse_groove'], + 'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'], + 'materials_model_id': obj['materials_model_id'], + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': obj['interface_materials_model_id'], + 'type_of_drive': obj['type_of_drive'], + }) + return jaw_vice_fixture_param_str + + def _json_magnet_fixture_param(self, obj): + magnet_fixture_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'height_tolerance_value': obj['height_tolerance_value'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'rated_adsorption_force': obj['rated_adsorption_force'], + 'magnetic_field_height': obj['magnetic_field_height'], + 'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': obj['materials_model_id'], + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': obj['interface_materials_model_id'], + 'type_of_drive': obj['type_of_drive'], + }) + return magnet_fixture_param_str + + def _json_adapter_board_fixture_param(self, obj): + adapter_board_fixture_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': obj['materials_model_id'], + 'rigidity': obj['rigidity'], + 'screw_size': obj['screw_size'], + 'via_hole_diameter': obj['via_hole_diameter'], + 'type_of_drive': obj['type_of_drive'], + }) + return adapter_board_fixture_param_str + + def _json_scroll_chuck_param(self, obj): + scroll_chuck_param_str = (0, '', { + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': obj['materials_model_id'], + 'rigidity': obj['rigidity'], + 'mounting_hole_depth': obj['mounting_hole_depth'], + 'centering_diameter': obj['centering_diameter'], + 'type_of_drive': obj['type_of_drive'], + }) + return scroll_chuck_param_str diff --git a/sf_base/models/fixture.py b/sf_base/models/fixture.py index d6455550..c1591745 100644 --- a/sf_base/models/fixture.py +++ b/sf_base/models/fixture.py @@ -32,6 +32,7 @@ class FixtureModel(models.Model): multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型", required=True) brand_id = fields.Many2one('sf.machine.brand', string="品牌") model_file = fields.Binary(string="3D模型图") + status = fields.Boolean('状态') active = fields.Boolean('有效', default=False) zero_chuck_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id', diff --git a/sf_base/security/group_security.xml b/sf_base/security/group_security.xml index dd78c2c0..478d41b9 100644 --- a/sf_base/security/group_security.xml +++ b/sf_base/security/group_security.xml @@ -71,7 +71,7 @@ 计划总监 - + diff --git a/sf_base/views/change_base_view.xml b/sf_base/views/change_base_view.xml new file mode 100644 index 00000000..3c02351a --- /dev/null +++ b/sf_base/views/change_base_view.xml @@ -0,0 +1,15 @@ + + + + + sf.base.res.partner.kanban + res.partner + + + +
  • +
    +
    +
    +
    +
    diff --git a/sf_dlm_management/static/js/changeCss.js b/sf_dlm_management/static/js/changeCss.js new file mode 100644 index 00000000..9510a207 --- /dev/null +++ b/sf_dlm_management/static/js/changeCss.js @@ -0,0 +1,35 @@ +// 因为表格可以拖动设置宽度,所以需要用js设置初始宽度 +function setBasicParamTableWidth() { + + + const basicParamDom = $('.fixTableCss') + let dom = [] + try { + dom = basicParamDom.find('table').find('thead').children().children() + + } catch { + dom = [] + } + if (!dom) return + dom.each(function () { + if ($(this).hasClass('row_no') >= 0) { // 序号列 + // 不设置 通过css设置 + } + const text = $(this).text() + $(this).find('span').removeClass('text-truncate') + if (text.length > 5) { + $(this).width('150px') + } else if (text.length == 5) { + $(this).width('100px') + } else if (text.length == 4) { + $(this).width('80px') + } else if (text.length == 3) { + $(this).width('65px') + } else if (text.length == 2) { + $(this).width('50px') + } + + }) +} + +setTimeout(setBasicParamTableWidth, 500) diff --git a/sf_dlm_management/views/product_template_management_view.xml b/sf_dlm_management/views/product_template_management_view.xml index 9ef1bc07..2d3067ea 100644 --- a/sf_dlm_management/views/product_template_management_view.xml +++ b/sf_dlm_management/views/product_template_management_view.xml @@ -41,8 +41,10 @@ + -
    - - + product.template.only.form.inherit.sf product.template @@ -98,7 +99,15 @@ - + + + + + product.template.only.form.inherit.sf + product.template + + + @@ -413,25 +422,17 @@ + attrs="{'readonly': [('id', '!=', False)]}" class="fixTableCss"> - - - - - - - - - + @@ -449,64 +450,106 @@ - + - - - - - - - - - - + diff --git a/sf_machine_connect/views/machine_monitor.xml b/sf_machine_connect/views/machine_monitor.xml index 83b89598..9c9a21a3 100644 --- a/sf_machine_connect/views/machine_monitor.xml +++ b/sf_machine_connect/views/machine_monitor.xml @@ -29,44 +29,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -216,46 +216,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sf_maintenance/__manifest__.py b/sf_maintenance/__manifest__.py index cec0b7e3..e5a4f03b 100644 --- a/sf_maintenance/__manifest__.py +++ b/sf_maintenance/__manifest__.py @@ -10,6 +10,7 @@ 'data': [ 'security/group_security.xml', 'security/ir.model.access.csv', + 'security/ir_rule_data.xml', 'views/maintenance_logs_views.xml', 'views/maintenance_views.xml', 'views/equipment_maintenance_standards_views.xml', diff --git a/sf_maintenance/models/sf_maintenance.py b/sf_maintenance/models/sf_maintenance.py index b09fb373..97deb883 100644 --- a/sf_maintenance/models/sf_maintenance.py +++ b/sf_maintenance/models/sf_maintenance.py @@ -139,7 +139,7 @@ class SfMaintenanceEquipment(models.Model): record.equipment_type = record.category_id.equipment_type code = fields.Char('行业编码') - name = fields.Char('机台号') + name = fields.Char('机台号', required=False) knife_type = fields.Selection( [("BT40", "BT40"), ("BT30", "BT30"), ("BT50", "BT50")], default="", string="刀把类型") @@ -160,8 +160,9 @@ class SfMaintenanceEquipment(models.Model): type_id = fields.Many2one('sf.machine_tool.type', '型号') state = fields.Selection( - [("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")], + [("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"),("空闲", "空闲"),("封存(报废)", "封存(报废)")], default='正常', string="机床状态") + run_time = fields.Char('总运行时长') # 0606新增字段 machine_tool_picture = fields.Binary('图片') heightened_way = fields.Selection([ @@ -449,7 +450,7 @@ class SfMaintenanceEquipment(models.Model): sf_secret_key = sf_sync_config['sf_secret_key'] headers = Common.get_headers(self, token, sf_secret_key) strurl = sf_sync_config['sf_url'] + self.crea_url - objs_all = self.env['maintenance.equipment'].search([('MTcode', '=', self.MTcode)]) + objs_all = self.env['maintenance.equipment'].search([('id', '=', self.id)]) machine_tool_list = [] if objs_all: for item in objs_all: @@ -552,7 +553,7 @@ class SfMaintenanceEquipment(models.Model): kw = json.dumps(machine_tool_list, ensure_ascii=False) r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers) ret = r.json() - self.code = ret['message'] + self.code = ret['data'] self.state_zc = "已注册" if r == 200: return "机床注册成功" diff --git a/sf_maintenance/models/sf_maintenance_logs.py b/sf_maintenance/models/sf_maintenance_logs.py index 5c798754..791f66f8 100644 --- a/sf_maintenance/models/sf_maintenance_logs.py +++ b/sf_maintenance/models/sf_maintenance_logs.py @@ -26,3 +26,4 @@ class SfMaintenanceLogs(models.Model): recovery_time = fields.Datetime(string='复原时间') fault_duration = fields.Float(string='故障时长') note = fields.Text(string='备注') + active = fields.Boolean('Active', default=True) diff --git a/sf_maintenance/security/ir.model.access.csv b/sf_maintenance/security/ir.model.access.csv index 4f693af2..54e54d01 100644 --- a/sf_maintenance/security/ir.model.access.csv +++ b/sf_maintenance/security/ir.model.access.csv @@ -7,8 +7,12 @@ access_maintenance_standard_image,maintenance_standard_image,model_maintenance_s access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_user,1,1,1,1 -access_maintenance_request,maintenance.request,maintenance.model_maintenance_request,sf_base.group_plan_dispatch,1,0,0,0 -access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_base.group_plan_dispatch,1,0,0,0 -access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_base.group_plan_dispatch,1,0,0,0 -access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0 -access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0 \ No newline at end of file +access_maintenance_request_group_plan_dispatch,maintenance.request,maintenance.model_maintenance_request,sf_base.group_plan_dispatch,1,0,0,0 +access_maintenance_equipment_group_plan_dispatch,maintenance.equipment,maintenance.model_maintenance_equipment,sf_base.group_plan_dispatch,1,1,1,1 +access_sf_maintenance_logs_group_plan_dispatch,sf_maintenance_logs,model_sf_maintenance_logs,sf_base.group_plan_dispatch,1,0,0,0 +access_maintenance_standard_image_group_plan_dispatch,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0 +access_equipment_maintenance_standards_group_plan_dispatch,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0 +access_maintenance_standards_group_plan_dispatch,maintenance_standards,model_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0 + +access_maintenance_equipment_tool_group_plan_dispatch,maintenance.equipment.tool,sf_manufacturing.model_maintenance_equipment_tool,sf_base.group_plan_dispatch,1,0,0,0 +access_sf_robot_axis_num_group_plan_dispatch,sf.robot.axis.num,model_sf_robot_axis_num,sf_base.group_plan_dispatch,1,0,0,0 \ No newline at end of file diff --git a/sf_maintenance/security/ir_rule_data.xml b/sf_maintenance/security/ir_rule_data.xml new file mode 100644 index 00000000..3aa4366f --- /dev/null +++ b/sf_maintenance/security/ir_rule_data.xml @@ -0,0 +1,15 @@ + + + + + Maintenance Equipment Plan Dispatch Rule + + + + True + False + False + False + + + diff --git a/sf_maintenance/views/maintenance_equipment_category_views.xml b/sf_maintenance/views/maintenance_equipment_category_views.xml index fa9c571c..2cdb47a3 100644 --- a/sf_maintenance/views/maintenance_equipment_category_views.xml +++ b/sf_maintenance/views/maintenance_equipment_category_views.xml @@ -18,7 +18,7 @@ - + diff --git a/sf_maintenance/views/maintenance_logs_views.xml b/sf_maintenance/views/maintenance_logs_views.xml index a4e8d605..b0d6af79 100644 --- a/sf_maintenance/views/maintenance_logs_views.xml +++ b/sf_maintenance/views/maintenance_logs_views.xml @@ -105,9 +105,10 @@ - 设备故障日志 + 设备故障日志 ir.actions.act_window sf.maintenance.logs + tree,form @@ -117,6 +118,23 @@ + + + + + + + + + + + + + + + + + diff --git a/sf_maintenance/views/maintenance_views.xml b/sf_maintenance/views/maintenance_views.xml index 5faa4a9c..5266bced 100644 --- a/sf_maintenance/views/maintenance_views.xml +++ b/sf_maintenance/views/maintenance_views.xml @@ -27,7 +27,7 @@ @@ -56,21 +56,22 @@ domain="[('brand_id', '=', brand_id)]"/> + - +