diff --git a/jikimo_frontend/static/src/scss/custom_style.scss b/jikimo_frontend/static/src/scss/custom_style.scss
index fdbd674b..5a8c2d84 100644
--- a/jikimo_frontend/static/src/scss/custom_style.scss
+++ b/jikimo_frontend/static/src/scss/custom_style.scss
@@ -49,24 +49,29 @@ td.o_required_modifier {
display: flex;
flex-direction: column;
position: absolute;
- top: 0;
+ top: 28px;
bottom: 0;
- right: 8px;
+ right: 18px;
margin: auto;
- height: 34px;
+ //height: 34px;
+ height: unset !important;
+ align-items: center;
}
.show_state > div {
- width: 12px;
+ width: 20px;
height: 12px;
border: 1px solid #000
}
-.show_state > div:nth-child(2) {
- border-top: none;
+.show_state > div:nth-child(1) {
border-bottom: none;
}
+.show_state > div:nth-child(2) {
+ border-top: 1px solid black !important;
+}
+
.oe_kanban_card.kanban_color_2 {
background-color: #FF4343 !important;
color: #fff;
@@ -83,6 +88,11 @@ td.o_required_modifier {
color: #fff;
}
+.my-image div {
+ width: 122px !important;
+ height: 122px !important;
+}
+
.my-image img {
width: 100%;
height: 100%;
@@ -149,6 +159,7 @@ td.o_required_modifier {
}
//-----------------------------------------------------------
+
//图文展示换行及对齐
.many2many_flex {
flex-wrap: wrap;
@@ -160,4 +171,64 @@ td.o_required_modifier {
display: flex;
flex-direction: column;
align-items: flex-start;
-}
\ No newline at end of file
+}
+
+div[class="o_content o_component_with_search_panel"] .oe_kanban_color_0 {
+ position: relative;
+ padding: 0 !important;
+}
+
+div[class="o_content o_component_with_search_panel"] img[name="equipment_image"] {
+ width: 150px !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_kanban_card_content button {
+ position: absolute;
+ top: -52px;
+ left: -55px;
+ width: 80px;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_primary > span:nth-of-type(1) {
+ position: absolute;
+ top: 10px;
+ left: 168px;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_primary > span:nth-of-type(2) {
+ margin-left: 18px;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_kanban_dashboard:not(.o_legacy_kanban_view) .o_kanban_record > div .o_kanban_manage_toggle_button {
+ top: 10px !important;
+ right: 17px !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_kanban_record_headings .ml8 {
+ margin-left: 0px !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_kanban_dashboard:not(.o_legacy_kanban_view) .o_kanban_record > div .o_kanban_card_content {
+ min-height: 0 !important;
+ height: 0 !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_kanban_dashboard:not(.o_legacy_kanban_view) .o_kanban_record > div .o_kanban_card_header + .container.o_kanban_card_content {
+ margin-top: -5px !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .o_kanban_primary_left {
+ right: 10px;
+ padding: 0 !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .show_state {
+ right: 10px !important;
+ top: 45px !important;
+}
+
+div[class="o_content o_component_with_search_panel"] .show_state span {
+ margin-top: 10px;
+ font-size: 12px;
+}
+
diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py
index 4442567e..69fb8f30 100644
--- a/sf_bf_connect/controllers/controllers.py
+++ b/sf_bf_connect/controllers/controllers.py
@@ -27,7 +27,7 @@ class Sf_Bf_Connect(http.Controller):
bfm_process_order_list = json.loads(kw['bfm_process_order_list'])
order_id = request.env['sale.order'].with_user(request.env.ref("base.user_admin")).sale_order_create(
company_id, kw['delivery_name'], kw['delivery_telephone'], kw['delivery_address'],
- kw['delivery_end_date'])
+ kw['delivery_end_date'], kw['payments_way'], kw['pay_way'])
i = 1
# 给sale_order的default_code字段赋值
aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
diff --git a/sf_dlm/__manifest__.py b/sf_dlm/__manifest__.py
index 20211cde..ed717647 100644
--- a/sf_dlm/__manifest__.py
+++ b/sf_dlm/__manifest__.py
@@ -11,7 +11,7 @@
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
'depends': ['mrp', 'base', 'sale', 'sf_manufacturing', 'web_widget_model_viewer', 'mrp_subcontracting', 'purchase_stock',
- 'uom'],
+ 'uom','jikimo_frontend'],
'data': [
'data/product_data.xml',
'data/uom_data.xml',
diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml
index 19327a82..dd86fc86 100644
--- a/sf_dlm/views/product_template_view.xml
+++ b/sf_dlm/views/product_template_view.xml
@@ -336,23 +336,24 @@
-
+
+ widget="custom_many2many_checkboxes"/>
-
+
-
+
-
+
diff --git a/sf_maintenance/models/sf_equipment_maintenance_standards.py b/sf_maintenance/models/sf_equipment_maintenance_standards.py
index 47e7ddaf..7c8740f5 100644
--- a/sf_maintenance/models/sf_equipment_maintenance_standards.py
+++ b/sf_maintenance/models/sf_equipment_maintenance_standards.py
@@ -62,7 +62,6 @@ class SfSaintenanceStandards(models.Model):
fault_type = fields.Selection(
[('电气类', '电气类'), ('机械类', '机械类'), ('程序类', '程序类'), ('系统类', '系统类')], string='类别')
equipment_maintenance_standards_id = fields.Many2one('equipment.maintenance.standards', string='设备维保标准')
- maintenance_request_id = fields.Many2one('maintenance.request', string='设备维保计划')
images = fields.One2many('maintenance.standard.image', 'standard_id', string='反馈图片')
Period = fields.Integer('周期/频次(天)')
remark = fields.Char('备注说明')
diff --git a/sf_maintenance/models/sf_maintenance.py b/sf_maintenance/models/sf_maintenance.py
index d66de31e..e71f1bf8 100644
--- a/sf_maintenance/models/sf_maintenance.py
+++ b/sf_maintenance/models/sf_maintenance.py
@@ -44,11 +44,9 @@ class SfMaintenanceEquipment(models.Model):
overhaul_period = fields.Integer(string='预防检修频次')
overhaul_duration = fields.Float(string='检修时长')
-
overhaul_id = fields.Many2one('equipment.maintenance.standards', string='设备检修标准',
domain="[('maintenance_type','=','检修')]")
-
@api.onchange('eq_maintenance_id', 'overhaul_id')
def _compute_equipment_maintenance_standards_ids(self):
for record in self:
@@ -145,7 +143,6 @@ class SfMaintenanceEquipment(models.Model):
machine_tool_id = fields.Many2one('sf.machine_tool', '机床')
sf_maintenance_logs_ids = fields.One2many('sf.maintenance.logs', 'maintenance_equipment_id', '设备故障日志')
-
def name_get(self):
result = []
for parameter in self:
@@ -156,7 +153,6 @@ class SfMaintenanceEquipment(models.Model):
result.append((parameter.id, name))
return result
-
@api.constrains('rotate_speed')
def _check_rotate_speed(self):
if self.rotate_speed <= 0:
@@ -478,14 +474,17 @@ class SfMaintenanceEquipment(models.Model):
image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id', string='设备图文')
+
class MaintenanceStandardImage(models.Model):
_name = 'maintenance.equipment.image'
- _description = '设备图文展示'
-
+ _description = '能力特征库'
active = fields.Boolean('有效', default=True)
- name = fields.Char('加工能力')
- image = fields.Binary(string='设备图文')
+ name = fields.Char('名称')
+ image = fields.Binary(string='图文')
+ type = fields.Selection(
+ [('加工能力', '加工能力'), ('刀尖特征', '刀尖特征'), ('柄部类型', '柄部类型'), ('走刀方向', '走刀方向'), ('冷却液', '冷却液')],
+ string='特征')
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
@api.model
@@ -518,6 +517,3 @@ class MaintenanceStandardImage(models.Model):
new_res.append([id, name, data_uri])
# 返回新的结果列表
return new_res
-
-
-
diff --git a/sf_maintenance/models/sf_maintenance_requests.py b/sf_maintenance/models/sf_maintenance_requests.py
index 8a8ce54b..fad9e55f 100644
--- a/sf_maintenance/models/sf_maintenance_requests.py
+++ b/sf_maintenance/models/sf_maintenance_requests.py
@@ -25,7 +25,7 @@ class SfMaintenanceEquipmentCategory(models.Model):
if not record.equipment_maintenance_id:
record.equipment_maintenance_id = False
- maintenance_standards = fields.One2many('maintenance.standards', 'maintenance_request_id', string='维保标准')
+ maintenance_standards = fields.Many2many('maintenance.standards', string='维保标准')
@api.constrains('equipment_maintenance_id')
def _check_equipment_maintenance_id(self):
diff --git a/sf_maintenance/views/maintenance_views.xml b/sf_maintenance/views/maintenance_views.xml
index cbb063a0..85be0a1c 100644
--- a/sf_maintenance/views/maintenance_views.xml
+++ b/sf_maintenance/views/maintenance_views.xml
@@ -381,8 +381,9 @@
maintenance.equipment.image.tree
maintenance.equipment.image
-
+
+
@@ -394,11 +395,12 @@
maintenance.equipment.image.form
maintenance.equipment.image
-
+
+
+
+
mrp.workcenter.kanban.inherit
@@ -126,202 +167,203 @@
-
- mrp.workcenter.view.kanban.inherit.maintenance
- mrp.workcenter
-
-
-
-
-
-
-
+
+ mrp.workcenter.view.kanban.inherit.maintenance
+ mrp.workcenter
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -->
- -->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -->
+
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -350,18 +392,18 @@
-
-
- mrp.workcenter.inherit
- mrp.workcenter
-
-
-
-
-
-
-
-
-
+
+
+ mrp.workcenter.inherit
+ mrp.workcenter
+
+
+
+
+
+
+
+
+
diff --git a/sf_sale/__manifest__.py b/sf_sale/__manifest__.py
index b3cb99a1..bfb221ca 100644
--- a/sf_sale/__manifest__.py
+++ b/sf_sale/__manifest__.py
@@ -10,7 +10,7 @@
""",
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
- 'depends': ['sale_management', 'web_widget_model_viewer',],
+ 'depends': ['sale', 'web_widget_model_viewer'],
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py
index eed2be57..6599cd09 100644
--- a/sf_sale/models/quick_easy_order.py
+++ b/sf_sale/models/quick_easy_order.py
@@ -16,6 +16,7 @@ import requests
class QuickEasyOrder(models.Model):
_name = 'quick.easy.order'
_description = '简易下单'
+ _order = 'id desc'
name = fields.Char('订单编号', default=lambda self: self.env['ir.sequence'].next_by_code('quick.easy.order'))
model_length = fields.Float('长(mm)', digits=(16, 3))
@@ -48,6 +49,7 @@ class QuickEasyOrder(models.Model):
model_color_state = fields.Selection([
('success', '成功'),
('fail', '失败')], string='模型上色状态')
+ processing_time = fields.Integer('加工时长(min)')
@api.depends('unit_price', 'quantity')
def _compute_total_amount(self):
@@ -77,10 +79,10 @@ class QuickEasyOrder(models.Model):
model_code = hashlib.sha1(base64_datas.encode('utf-8')).hexdigest()
report_path = attachment._full_path(attachment.store_fname)
vals['model_file'] = self.transition_glb_file(report_path, model_code)
- logging.info('create-model_file:%s' % len(vals['model_file']))
+ # logging.info('create-model_file:%s' % len(vals['model_file']))
obj = super(QuickEasyOrder, self).create(vals)
- self.model_coloring(obj)
+ # self.model_coloring(obj)
self.distribute_to_factory(obj)
obj.state = '待接单'
return obj
@@ -88,14 +90,14 @@ class QuickEasyOrder(models.Model):
# 将attach的datas内容转为glb文件
def transition_glb_file(self, report_path, model_code):
shapes = read_step_file(report_path)
- # output_file = os.path.join('C:/Users/43484/Desktop/机企猫工作文档', str(model_code) + '.stl')
- output_file = os.path.join('/tmp', str(model_code) + '.stl')
+ output_file = os.path.join('C:/Users/43484/Desktop/机企猫工作文档', str(model_code) + '.stl')
+ # output_file = os.path.join('/tmp', str(model_code) + '.stl')
write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
# 转化为glb
- # output_glb_file = os.path.join('C:/Users/43484/Desktop/机企猫工作文档', str(model_code) + '.glb')
- output_glb_file = os.path.join('/tmp', str(model_code) + '.glb')
+ output_glb_file = os.path.join('C:/Users/43484/Desktop/机企猫工作文档', str(model_code) + '.glb')
+ # output_glb_file = os.path.join('/tmp', str(model_code) + '.glb')
util_path = get_resource_path('sf_dlm', 'static/util')
- cmd = 'python3 %s/stl2gltf.py %s %s -b' % (util_path, output_file, output_glb_file)
+ cmd = 'python %s/stl2gltf.py %s %s -b' % (util_path, output_file, output_glb_file)
os.system(cmd)
# 转base64
with open(output_glb_file, 'rb') as fileObj:
@@ -120,17 +122,17 @@ class QuickEasyOrder(models.Model):
model_code = hashlib.sha1(base64_datas.encode('utf-8')).hexdigest()
logging.info("模型编码: %s" % model_code)
item.model_file = self.transition_glb_file(report_path, model_code)
- ret = self.feature_recognition(report_path, model_code)
- logging.info("自动报价返回值: %s" % ret)
- boxshape = ret['boxshape'].tolist()
- logging.info("自动报价boxshape: %s" % boxshape)
- logging.info('自动报价feature_infos:%s' % ret['feature_infos'])
- item.model_length = boxshape[0] # 长 单位mm
- item.model_width = boxshape[1] # 宽
- item.model_height = boxshape[2] # 高
- item.model_volume = boxshape[0] * boxshape[1] * boxshape[2]
- item.model_feature = json.dumps(ret['feature_infos'], ensure_ascii=False)
- self._get_price(item)
+ # ret = self.feature_recognition(report_path, model_code)
+ # logging.info("自动报价返回值: %s" % ret)
+ # boxshape = ret['boxshape'].tolist()
+ # logging.info("自动报价boxshape: %s" % boxshape)
+ # logging.info('自动报价feature_infos:%s' % ret['feature_infos'])
+ # item.model_length = boxshape[0] # 长 单位mm
+ # item.model_width = boxshape[1] # 宽
+ # item.model_height = boxshape[2] # 高
+ # item.model_volume = boxshape[0] * boxshape[1] * boxshape[2]
+ # item.model_feature = json.dumps(ret['feature_infos'], ensure_ascii=False)
+ # self._get_price(item)
else:
item.model_file = False
item.model_feature = False
@@ -151,7 +153,7 @@ class QuickEasyOrder(models.Model):
base64_data = base64.b64encode(attachment.datas)
base64_datas = base64_data.decode('utf-8')
barcode = hashlib.sha1(base64_datas.encode('utf-8')).hexdigest()
- logging.info('model_file-size: %s' % len(item.model_file))
+ # logging.info('model_file-size: %s' % len(item.model_file))
res['bfm_process_order_list'].append({
'model_long': item.model_length,
'model_width': item.model_width,
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index 8d9dfd5a..c57aa780 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -6,14 +6,16 @@ import base64
class ReSaleOrder(models.Model):
_inherit = 'sale.order'
- deadline_of_delivery = fields.Date('交货截止日期')
+ deadline_of_delivery = fields.Date('订单交期')
person_of_delivery = fields.Char('交货人')
telephone_of_delivery = fields.Char('交货人电话号码')
address_of_delivery = fields.Char('交货人地址')
+ payments_way = fields.Selection([('现结', '现结'), ('月结', '月结')], '结算方式', default='现结')
+ pay_way = fields.Selection([('转账', '转账'), ('微信', '微信'), ('支付宝', '支付宝')], '支付方式')
# 业务平台分配工厂后在智能工厂先创建销售订单
def sale_order_create(self, company_id, delivery_name, delivery_telephone, delivery_address,
- deadline_of_delivery):
+ deadline_of_delivery, payments_way, pay_way):
now_time = datetime.datetime.now()
partner = self.get_customer()
order_id = self.env['sale.order'].sudo().create({
@@ -22,11 +24,12 @@ class ReSaleOrder(models.Model):
'name': self.env['ir.sequence'].next_by_code('sale.order', sequence_date=now_time),
'partner_id': partner.id,
'state': 'draft',
- # 'user_id': user_id.id,
'person_of_delivery': delivery_name,
'telephone_of_delivery': delivery_telephone,
'address_of_delivery': delivery_address,
- 'deadline_of_delivery': deadline_of_delivery
+ 'deadline_of_delivery': deadline_of_delivery,
+ 'payments_way': payments_way,
+ 'pay_way': pay_way,
})
return order_id
@@ -49,7 +52,7 @@ class ReSaleOrder(models.Model):
product.materials_id.name),
'price_unit': product.list_price,
'product_uom_qty': item['number'],
- 'model_glb_file': base64.b64decode(item['model_file']),
+ 'model_glb_file': base64.b64decode(item['model_file']),
}
return self.env['sale.order.line'].create(vals)
diff --git a/sf_sale/views/quick_easy_order_view.xml b/sf_sale/views/quick_easy_order_view.xml
index a5ce9da2..063c119f 100644
--- a/sf_sale/views/quick_easy_order_view.xml
+++ b/sf_sale/views/quick_easy_order_view.xml
@@ -16,16 +16,18 @@
quick.easy.order
-
-
+
+
+
@@ -74,6 +76,7 @@
options="{'format': false}"/>
+
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index a8f14c62..93545342 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -1,6 +1,7 @@
+
sale.order.form.inherit.sf
sale.order
@@ -8,6 +9,8 @@
+
+
sale.order
+
+ 下单日期
+
@@ -39,5 +45,31 @@
+
+
+ sale.order.quotation.tree.inherit.sf
+ sale.order
+
+
+
+ 订单号
+
+
+ 下单时间
+
+
+
+
+
+ sale.order.tree
+ sale.order
+
+
+
+ 订单号
+
+
+
+
\ No newline at end of file
diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index 33bc1d4b..9ae2a422 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -551,7 +551,7 @@ class MachineTableToolChangingApply(models.Model):
name = fields.Many2one('maintenance.equipment', string='CNC机床',required=True, readonly=False,
group_expand='_read_group_names')
- machine_table_type_id = fields.Many2one('sf.machine_tool.category', string='机床类型', readonly=True,
+ machine_table_type_id = fields.Many2one('maintenance.equipment.category', string='机床类型', readonly=True,
compute='_compute_name')
machine_tool_code = fields.Char(string='机台号', invisible=True, readonly=True, compute='_compute_name')
cutter_spacing_code = fields.Char(string='刀位号', readonly=False)
@@ -595,7 +595,7 @@ class MachineTableToolChangingApply(models.Model):
def _compute_name(self):
for record in self:
if record:
- record.machine_table_type_id = record.name.machine_tool_category.id
+ record.machine_table_type_id = record.name.category_id.id
record.machine_tool_code = record.name.code
@api.depends('functional_tool_name_id')
diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml
index 7192c8f0..31b69188 100644
--- a/sf_tool_management/views/tool_base_views.xml
+++ b/sf_tool_management/views/tool_base_views.xml
@@ -870,7 +870,7 @@
-
+
@@ -879,7 +879,7 @@
-
+
@@ -999,19 +999,19 @@
-
+
-
+
-
-
+
+
@@ -1027,7 +1027,7 @@
-
+
diff --git a/sf_tool_management/wizard/wizard_view.xml b/sf_tool_management/wizard/wizard_view.xml
index 4e871807..2c7f1bed 100644
--- a/sf_tool_management/wizard/wizard_view.xml
+++ b/sf_tool_management/wizard/wizard_view.xml
@@ -23,15 +23,15 @@
-
+
-
+
-
-
+
+
diff --git a/web_widget_model_viewer/static/src/js/3d_viewer.xml b/web_widget_model_viewer/static/src/js/3d_viewer.xml
index 587c1ac4..73f142c9 100644
--- a/web_widget_model_viewer/static/src/js/3d_viewer.xml
+++ b/web_widget_model_viewer/static/src/js/3d_viewer.xml
@@ -25,7 +25,7 @@
- 当前制造订单暂无模型
+ 暂无模型