Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug

# Conflicts:
#	sf_maintenance/views/maintenance_views.xml
This commit is contained in:
qihao.gong@jikimo.com
2023-08-24 15:00:41 +08:00
7 changed files with 338 additions and 220 deletions

View File

@@ -8,27 +8,34 @@
white-space: nowrap; white-space: nowrap;
} }
div:has(.o_required_modifier)>label::before { div:has(.o_required_modifier) > label::before {
content: '*' !important; content: '*' !important;
color: red !important; color: red !important;
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;
} }
.my-image div {
width: 110px !important;
height: 110px !important;
}
.add_flex { .add_flex {
padding: 5px 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between;
} }
.maintenance_name { .maintenance_name {
font-weight: bold; font-weight: bold;
} }
.o_kanban_renderer .o_kanban_record .o_kanban_record_has_image_fill .o_kanban_image_fill_left { .o_kanban_renderer .o_kanban_record .o_kanban_record_has_image_fill .o_kanban_image_fill_left {
flex:unset !important; flex: unset !important;
} }
.o_kanban_renderer .o_kanban_record .o_kanban_record_bottom { .o_kanban_renderer .o_kanban_record .o_kanban_record_bottom {
margin-top: 5px; margin-top: 5px;
display: inline !important; display: inline !important;
@@ -37,3 +44,79 @@ div:has(.o_required_modifier)>label::before {
td.o_required_modifier { td.o_required_modifier {
display: table-cell !important; display: table-cell !important;
} }
.show_state {
display: flex;
flex-direction: column;
position: absolute;
top: 0;
bottom: 0;
right: 8px;
margin: auto;
height: 34px;
}
.show_state > div {
width: 12px;
height: 12px;
border: 1px solid #000
}
.show_state > div:nth-child(2) {
border-top: none;
border-bottom: none;
}
.oe_kanban_card.kanban_color_2 {
background-color: #FF4343 !important;
color: #fff;
}
.oe_kanban_card.kanban_color_1 {
background-color: #27FEA9 !important;
opacity: 0.7;
color: #fff;
}
.oe_kanban_card.kanban_color_3 {
background-color: rgb(255, 150, 0) !important;
color: #fff;
}
.my-image img {
width: 100%;
height: 100%;
}
.color_1 {
background-color: #27FEA9;
}
.color_2 {
background-color: #FF4343;
}
.color_3 {
background-color: rgb(255, 150, 0);
}
.font_color_1 {
color: rgb(0, 183, 0);
}
.font_color_2 {
color: #FF4343;
}
.font_color_3 {
color: rgb(255, 150, 0);
}
.o_kanban_card_header_title {
font-size: 15px;
}
.o_kanban_record_bottom {
font-family: '华文中宋';
//font-weight: bold;
}

View File

@@ -26,12 +26,12 @@
</header> </header>
</xpath> </xpath>
<xpath expr="//page[@name='maintenance']" position="attributes"> <xpath expr="//page[@name='maintenance']" position="attributes">
<attribute name="string">维保</attribute> <attribute name="string">维保</attribute>
</xpath> </xpath>
<xpath expr="//field[@name='maintenance_count']" position="attributes"> <xpath expr="//field[@name='maintenance_count']" position="attributes">
<attribute name="string">维保</attribute> <attribute name="string">维保</attribute>
</xpath> </xpath>
<!-- <field string="Maintenance" name="maintenance_count" widget="statinfo"/>--> <!-- <field string="Maintenance" name="maintenance_count" widget="statinfo"/>-->
<xpath expr="//div[@name='button_box']" position="inside"> <xpath expr="//div[@name='button_box']" position="inside">
<button name="%(action_maintenance_logs)d" <button name="%(action_maintenance_logs)d"
@@ -284,12 +284,11 @@
<field name="machine_tool_picture"/> <field name="machine_tool_picture"/>
</xpath> </xpath>
<xpath expr="//templates" position="inside">
<xpath expr="//templates" position="inside">
<t t-name="kanban-box"> <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 <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" <field name="machine_tool_picture" class="o_kanban_image_fill_left d-block my-image"
preview_image="image_128" widget="image"/> preview_image="image_128" widget="image"/>
@@ -307,7 +306,10 @@
<div class="o_kanban_record_bottom state_zc"> <div class="o_kanban_record_bottom state_zc">
<field name="technician_user_id"/> <field name="technician_user_id"/>
</div> </div>
<div class="o_kanban_record_bottom state_zc"> <div class="o_kanban_record_bottom state_zc"
t-attf-class="#{record.state.raw_value == '正常' ? 'font_color_1' : ''}
#{record.state.raw_value == '故障' ? 'font_color_2' : ''}
#{record.state.raw_value == '不可用' ? 'font_color_3' : ''}">
<field name="state"/> <field name="state"/>
</div> </div>
<!-- <div class="o_kanban_record_bottom">--> <!-- <div class="o_kanban_record_bottom">-->
@@ -316,7 +318,12 @@
<!-- <field name="supplier_id"/>--> <!-- <field name="supplier_id"/>-->
<!-- </div>--> <!-- </div>-->
</div> </div>
<div class="show_state" t-attf-class="oe_kanban_global_click o_kanban_record_has_image_fill o_hr_kanban_record oe_kanban_card oe_kanban_global_click
">
<div t-attf-class="#{record.state.raw_value == '正常' ? 'color_1' : ''}"></div>
<div t-attf-class="#{record.state.raw_value == '故障' ? 'color_2' : ''}"></div>
<div t-attf-class="#{record.state.raw_value == '不可用' ? 'color_3' : ''}"></div>
</div>
</div> </div>
</t> </t>
</xpath> </xpath>

View File

@@ -29,12 +29,12 @@
<sheet> <sheet>
<div class="oe_title"> <div class="oe_title">
<h1> <h1>
<field name="code" readonly="1"/> <field name="name" invisible="False"/>
</h1> </h1>
</div> </div>
<group> <group>
<group> <group>
<field name="name" invisible="True"/> <field name="code" readonly="1"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_cutting_tool_integral_model_ids" <field name="mrs_cutting_tool_integral_model_ids"
@@ -188,12 +188,12 @@
<sheet> <sheet>
<div class="oe_title"> <div class="oe_title">
<h1> <h1>
<field name="code" readonly="1"/> <field name="name" invisible="False"/>
</h1> </h1>
</div> </div>
<group> <group>
<group> <group>
<field name="name" invisible="True"/> <field name="code" readonly="1"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_cutting_tool_integral_model_ids" <field name="mrs_cutting_tool_integral_model_ids"
@@ -385,12 +385,12 @@
<sheet> <sheet>
<div class="oe_title"> <div class="oe_title">
<h1> <h1>
<field name="code" readonly="1"/> <field name="name" invisible="False"/>
</h1> </h1>
</div> </div>
<group> <group>
<group> <group>
<field name="name" invisible="True"/> <field name="code" readonly="1"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_cutting_tool_integral_model_ids" <field name="mrs_cutting_tool_integral_model_ids"
@@ -570,12 +570,12 @@
<sheet> <sheet>
<div class="oe_title"> <div class="oe_title">
<h1> <h1>
<field name="code" readonly="1"/> <field name="name" invisible="False"/>
</h1> </h1>
</div> </div>
<group> <group>
<group> <group>
<field name="name" invisible="True"/> <field name="code" readonly="1"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_cutting_tool_integral_model_ids" <field name="mrs_cutting_tool_integral_model_ids"
@@ -1170,14 +1170,14 @@
</header> </header>
<div class="oe_title"> <div class="oe_title">
<h1> <h1>
<field name="functional_tool_code" readonly="1"/> <field name="name"/>
</h1> </h1>
</div> </div>
<sheet> <sheet>
<group> <group>
<group> <group>
<field name="name"/> <field name="functional_tool_code" readonly="1"/>
<field name="functional_tool_type_id"/> <field name="functional_tool_type_id"/>
<field name="functional_tool_diameter"/> <field name="functional_tool_diameter"/>
<field name="functional_tool_length"/> <field name="functional_tool_length"/>
<field name="functional_tool_cutting_type"/> <field name="functional_tool_cutting_type"/>

View File

@@ -126,12 +126,16 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="刀具物料查询"> <form string="刀具物料查询">
<sheet> <sheet>
<group string='基本信息'> <div class="oe_title">
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group> <group>
<field name="mrs_cutting_tool_material_name" invisible="1"/> <field name="mrs_cutting_tool_material_name" invisible="1"/>
<field name="sequence"/> <field name="sequence"/>
<field name="code"/> <field name="code"/>
<field name="name"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_machine_brand_id"/> <field name="mrs_machine_brand_id"/>
<!-- <field name="mrs_cutting_tool_model_id"/> --> <!-- <field name="mrs_cutting_tool_model_id"/> -->
@@ -143,147 +147,158 @@
<field name="three_d_model" widget="many2one"/> <field name="three_d_model" widget="many2one"/>
</group> </group>
</group> </group>
<group string='刀具库存信息'> <notebook>
<group> <page string='刀具库存信息'>
<field name="number"/> <group >
<field name="mrs_materials_model_id"/> <group>
<field name="purchase_date"/> <field name="number"/>
<field name="purchase_batch"/> <field name="mrs_materials_model_id"/>
</group> <field name="purchase_date"/>
<group> <field name="purchase_batch"/>
<field name="supplier"/> </group>
<field name="warehouse_name"/> <group>
<field name="warehouse_area"/> <field name="supplier"/>
<field name="warehouse_location"/> <field name="warehouse_name"/>
</group> <field name="warehouse_area"/>
</group> <field name="warehouse_location"/>
</group>
</group>
</page>
<page string="刀片信息" attrs="{'invisible': [('cutting_tool_type','!=','刀片')]}">
<group>
<group>
<field name="blade_code" invisible="True"/>
<field name="blade_length"/>
<field name="blade_width"/>
<field name="blade_height"/>
<field name="blade_radius"/>
<field name="blade_hardness"/>
<field name="blade_accuracy"/>
<field name="blade_coating_material_id"/>
<field name="mrs_cutting_tool_model_blade_cutter_bar_ids" widget="many2many_tags"/>
</group>
<group>
<field name="blade_top_angle"/>
<field name="blade_front_angle"/>
<field name="blade_rear_angle"/>
<field name="blade_main_included_angle"/>
<field name="blade_r_angle"/>
<field name="blade_nut"/>
<field name="mrs_cutting_tool_model_blade_cutter_pad_ids" widget="many2many_tags"/>
</group>
</group>
</page>
<page string="整体式刀具信息" attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}">
<group>
<group>
<field name="integral_code" invisible="True"/>
<field name="integral_total_length"/>
<field name="integral_shank_length"/>
<field name="integral_blade_length"/>
<field name="integral_diameter"/>
<field name="integral_blade_number"/>
<field name="integral_accuracy"/>
</group>
<group>
<field name="integral_front_angle"/>
<field name="integral_rear_angle"/>
<field name="integral_main_included_angle"/>
<field name="integral_nut"/>
<field name="integral_hardness"/>
<field name="integral_coating_material"/>
<field name="integral_scope"/>
</group>
</group>
</page>
<page string="刀杆信息" attrs="{'invisible': [('cutting_tool_type','!=','刀杆')]}">
<group>
<group>
<field name="bar_code" invisible="True"/>
<field name="bar_c_diameter"/>
<field name="bar_total_length"/>
<field name="bar_blade_number"/>
<field name="bar_d_diameter"/>
<field name="bar_scope"/>
<field name="mrs_cutting_tool_model_bar_blade_ids" widget="many2many_tags"/>
</group>
<group>
<field name="bar_wrench"/>
<field name="bar_screw"/>
<field name="bar_radius"/>
<field name="bar_accuracy"/>
<field name="bar_hardness"/>
</group>
</group>
</page>
<page string="刀盘信息" attrs="{'invisible': [('cutting_tool_type','!=','刀盘')]}">
<group>
<group>
<field name="pad_code" invisible="True"/>
<field name="pad_c_diameter"/>
<field name="pad_total_length"/>
<field name="pad_blade_number"/>
<field name="pad_d_diameter"/>
<field name="pad_scope"/>
<field name="mrs_cutting_tool_model_pad_blade_ids" widget="many2many_tags"/>
</group>
<group>
<field name="pad_wrench"/>
<field name="pad_screw"/>
<field name="pad_radius"/>
<field name="pad_accuracy"/>
<field name="pad_hardness"/>
</group>
</group>
</page>
<page string="刀柄信息" attrs="{'invisible': [('cutting_tool_type','!=','刀柄')]}">
<group>
<group>
<field name="handle_code" invisible="True"/>
<field name="handle_diameter"/>
<field name="handle_flange_length"/>
<field name="handle_flange_diameter"/>
<field name="handle_clamping_diameter_min"/>
<field name="handle_clamping_diameter_max"/>
<field name="handle_clamping_range"/>
<field name="handle_detection_accuracy"/>
<field name="mrs_cutting_tool_model_handle_chuck_model_ids" widget="many2many_tags"/>
</group>
<group>
<field name="handle_jump_accuracy"/>
<field name="handle_max_speed"/>
<field name="handle_standard_speed"/>
<field name="handle_weight"/>
<field name="handle_body_accuracy"/>
<field name="handle_nut"/>
<field name="handle_detection_hardness"/>
</group>
</group>
</page>
<page string="夹头信息" attrs="{'invisible': [('cutting_tool_type','!=','夹头')]}">
<group>
<group>
<field name="chuck_code" invisible="True"/>
<field name="chuck_clamping_diameter_min"/>
<field name="chuck_clamping_diameter_max"/>
<field name="chuck_diameter"/>
<field name="chuck_inner_diameter"/>
<field name="chuck_feature"/>
<field name="mrs_cutting_tool_model_chuck_handle_model_ids" widget="many2many_tags"/>
</group>
<group>
<field name="chuck_accuracy"/>
<field name="chuck_height"/>
<field name="chuck_nut"/>
<field name="chuck_clamping_range"/>
<field name="image"/>
</group>
</group>
</page>
</notebook>
<group> <group>
<field name="cutting_tool_material_name" invisible="True"/> <field name="cutting_tool_material_name" invisible="True"/>
<field name="cutting_tool_type" invisible="True"/> <field name="cutting_tool_type" invisible="True"/>
</group> </group>
<group string="刀片信息" attrs="{'invisible': [('cutting_tool_type','!=','刀片')]}">
<group>
<field name="blade_code" invisible="True"/>
<field name="blade_length"/>
<field name="blade_width"/>
<field name="blade_height"/>
<field name="blade_radius"/>
<field name="blade_hardness"/>
<field name="blade_accuracy"/>
<field name="blade_coating_material_id"/>
<field name="mrs_cutting_tool_model_blade_cutter_bar_ids" widget="many2many_tags"/>
</group>
<group>
<field name="blade_top_angle"/>
<field name="blade_front_angle"/>
<field name="blade_rear_angle"/>
<field name="blade_main_included_angle"/>
<field name="blade_r_angle"/>
<field name="blade_nut"/>
<field name="mrs_cutting_tool_model_blade_cutter_pad_ids" widget="many2many_tags"/>
</group>
</group>
<group string="整体式刀具信息" attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}">
<group>
<field name="integral_code" invisible="True"/>
<field name="integral_total_length"/>
<field name="integral_shank_length"/>
<field name="integral_blade_length"/>
<field name="integral_diameter"/>
<field name="integral_blade_number"/>
<field name="integral_accuracy"/>
</group>
<group>
<field name="integral_front_angle"/>
<field name="integral_rear_angle"/>
<field name="integral_main_included_angle"/>
<field name="integral_nut"/>
<field name="integral_hardness"/>
<field name="integral_coating_material"/>
<field name="integral_scope"/>
</group>
</group>
<group string="刀杆信息" attrs="{'invisible': [('cutting_tool_type','!=','刀杆')]}">
<group>
<field name="bar_code" invisible="True"/>
<field name="bar_c_diameter"/>
<field name="bar_total_length"/>
<field name="bar_blade_number"/>
<field name="bar_d_diameter"/>
<field name="bar_scope"/>
<field name="mrs_cutting_tool_model_bar_blade_ids" widget="many2many_tags"/>
</group>
<group>
<field name="bar_wrench"/>
<field name="bar_screw"/>
<field name="bar_radius"/>
<field name="bar_accuracy"/>
<field name="bar_hardness"/>
</group>
</group>
<group string="刀盘信息" attrs="{'invisible': [('cutting_tool_type','!=','刀盘')]}">
<group>
<field name="pad_code" invisible="True"/>
<field name="pad_c_diameter"/>
<field name="pad_total_length"/>
<field name="pad_blade_number"/>
<field name="pad_d_diameter"/>
<field name="pad_scope"/>
<field name="mrs_cutting_tool_model_pad_blade_ids" widget="many2many_tags"/>
</group>
<group>
<field name="pad_wrench"/>
<field name="pad_screw"/>
<field name="pad_radius"/>
<field name="pad_accuracy"/>
<field name="pad_hardness"/>
</group>
</group>
<group string="刀柄信息" attrs="{'invisible': [('cutting_tool_type','!=','刀柄')]}">
<group>
<field name="handle_code" invisible="True"/>
<field name="handle_diameter"/>
<field name="handle_flange_length"/>
<field name="handle_flange_diameter"/>
<field name="handle_clamping_diameter_min"/>
<field name="handle_clamping_diameter_max"/>
<field name="handle_clamping_range"/>
<field name="handle_detection_accuracy"/>
<field name="mrs_cutting_tool_model_handle_chuck_model_ids" widget="many2many_tags"/>
</group>
<group>
<field name="handle_jump_accuracy"/>
<field name="handle_max_speed"/>
<field name="handle_standard_speed"/>
<field name="handle_weight"/>
<field name="handle_body_accuracy"/>
<field name="handle_nut"/>
<field name="handle_detection_hardness"/>
</group>
</group>
<group string="夹头信息" attrs="{'invisible': [('cutting_tool_type','!=','夹头')]}">
<group>
<field name="chuck_code" invisible="True"/>
<field name="chuck_clamping_diameter_min"/>
<field name="chuck_clamping_diameter_max"/>
<field name="chuck_diameter"/>
<field name="chuck_inner_diameter"/>
<field name="chuck_feature"/>
<field name="mrs_cutting_tool_model_chuck_handle_model_ids" widget="many2many_tags"/>
</group>
<group>
<field name="chuck_accuracy"/>
<field name="chuck_height"/>
<field name="chuck_nut"/>
<field name="chuck_clamping_range"/>
<field name="image"/>
</group>
</group>
</sheet> </sheet>
</form> </form>
</field> </field>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,14 +1,14 @@
/** @odoo-module **/ /** @odoo-module **/
import { registry } from "@web/core/registry"; import {registry} from "@web/core/registry";
import { _lt } from "@web/core/l10n/translation"; import {_lt} from "@web/core/l10n/translation";
import { standardFieldProps } from "@web/views/fields/standard_field_props"; import {standardFieldProps} from "@web/views/fields/standard_field_props";
import { useInputField } from "@web/views/fields/input_field_hook"; import {useInputField} from "@web/views/fields/input_field_hook";
import { FileUploader } from "@web/views/fields/file_handler"; import {FileUploader} from "@web/views/fields/file_handler";
import { session } from "@web/session"; import {session} from "@web/session";
import { useService } from "@web/core/utils/hooks"; import {useService} from "@web/core/utils/hooks";
import { isBinarySize } from "@web/core/utils/binary"; import {isBinarySize} from "@web/core/utils/binary";
import { download } from "@web/core/network/download"; import {download} from "@web/core/network/download";
import utils from 'web.utils'; import utils from 'web.utils';
import core from 'web.core'; import core from 'web.core';
@@ -16,34 +16,42 @@ import rpc from 'web.rpc';
var QWeb = core.qweb; var QWeb = core.qweb;
import { Component, onWillUpdateProps, useState, useRef, useEffect } from "@odoo/owl"; import {Component, onWillUpdateProps, useState, useRef, useEffect} from "@odoo/owl";
export class StepViewer extends Component { export class StepViewer extends Component {
setup() { setup() {
console.log('setup')
this.props.url = this.formatUrl(); this.props.url = this.formatUrl();
} }
formatUrl(){ formatUrl() {
var url = ''; var url = '';
if (this.props.value) { if (this.props.value) {
if (utils.is_bin_size(this.props.value)) { if (this.props.value.slice(-1) == 'b' && !isNaN(this.props.value.split(' ')[0])) {
var url_props = { var url_props = {
base_url: session['web.base.url'], base_url: session['web.base.url'],
model: this.props.record.resModel, model: this.props.record.resModel,
id: JSON.stringify(this.props.record.data['id']), id: JSON.stringify(this.props.record.data['id']),
field: this.props.name} field: this.props.name
url = url_props['base_url']+'/web/content/'+url_props['model']+'/'+url_props['id']+'/'+url_props['field']+'?download=true' }
console.log('url', url) url = url_props['base_url'].replace('http://', 'https://') + '/web/content/' + url_props['model'] + '/' + url_props['id'] + '/' + url_props['field'] + '?download=true'
// url = 'http://localhost:8069'+'/web/content/'+url_props['model']+'/'+url_props['id']+'/'+url_props['field']+'?download=true'
console.log('url111111', url)
return url
} else { } else {
url = "data:model/gltf-binary;base64," + this.props.value; url = "data:model/gltf-binary;base64," + this.props.value;
console.log('url222', url) console.log('url2', url)
return url
// localStorage.setItem('url',url)
// let new_url = localStorage.getItem(('url'))
// var oViewer = document.getElementsByTagName('model-viewer')[0];
// return new_url
// url = "web_widget_model_viewer/static/src/images/not_model.png";
} }
} else {
var oImg = document.getElementsByClassName('test')[0]
console.log(oImg)
} }
return url
} }
} }
StepViewer.template = "web_widget_model_viewer.BinaryField3d"; StepViewer.template = "web_widget_model_viewer.BinaryField3d";
@@ -53,10 +61,10 @@ StepViewer.supportedTypes = ["binary"];
StepViewer.props = { StepViewer.props = {
...standardFieldProps, ...standardFieldProps,
url: { type: String, optional: true }, url: {type: String, optional: true},
}; };
StepViewer.extractProps = ({ attrs }) => { StepViewer.extractProps = ({attrs}) => {
return { return {
url: attrs.options.url, url: attrs.options.url,
}; };

View File

@@ -3,36 +3,41 @@
<t t-name="web_widget_model_viewer.BinaryField3d" owl="1"> <t t-name="web_widget_model_viewer.BinaryField3d" owl="1">
<model-viewer <t t-if="props.value">
t-att-src='props.url' <model-viewer
name="3D model" t-att-src='props.url'
alt="3D model" name="3D model"
auto-rotate="1" alt="3D model"
camera-controls="1" auto-rotate="1"
style ="background-color: #0D1D54;" camera-controls="1"
> style="background-color: #0D1D54;"
>
<!-- <div class="text-center mt-4 mb-4 mr-4">--> <!-- <div class="text-center mt-4 mb-4 mr-4">-->
<!-- <span--> <!-- <span-->
<!-- id="model-viewer-fullscreen"--> <!-- id="model-viewer-fullscreen"-->
<!-- title="View fullscreen"--> <!-- title="View fullscreen"-->
<!-- role="img"--> <!-- role="img"-->
<!-- aria-label="Fullscreen"--> <!-- aria-label="Fullscreen"-->
<!-- >--> <!-- >-->
<!-- <i class="fa fa-arrows-alt fa-2x"/>--> <!-- <i class="fa fa-arrows-alt fa-2x"/>-->
<!-- </span>--> <!-- </span>-->
<!-- </div>--> <!-- </div>-->
</model-viewer> </model-viewer>
</t>
<t t-if="!props.value">
<div style="color:#D23F3A">当前制造订单暂无模型</div>
</t>
<!-- <model-viewer--> <!-- <model-viewer-->
<!-- src='/jikimo_model_viewer/static/src/js/3d_viewer/test.glb'--> <!-- src='/jikimo_model_viewer/static/src/js/3d_viewer/test.glb'-->
<!-- name="Test 3D model"--> <!-- name="Test 3D model"-->
<!-- alt="Test 3D model"--> <!-- alt="Test 3D model"-->
<!-- auto-rotate="1"--> <!-- auto-rotate="1"-->
<!-- camera-controls="1"--> <!-- camera-controls="1"-->
<!-- />--> <!-- />-->
<script type="module" <script type="module"
src="/web_widget_model_viewer/static/src/lib/model-viewer.min.js"> src="/web_widget_model_viewer/static/src/lib/model-viewer.min.js">
</script> </script>
</t> </t>