Accept Merge Request #342: (feature/必填字段label添加星号 -> develop)

Merge Request: 3d模型无法展示的时候用文字替换

Created By: @许何哲
Accepted By: @许何哲
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/342?initial=true
This commit is contained in:
许何哲
2023-08-24 11:10:06 +08:00
committed by Coding
2 changed files with 64 additions and 54 deletions

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,13 +16,14 @@ 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() {
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 (this.props.value.slice(-1) == 'b' && !isNaN(this.props.value.split(' ')[0])) { if (this.props.value.slice(-1) == 'b' && !isNaN(this.props.value.split(' ')[0])) {
@@ -30,23 +31,27 @@ export class StepViewer extends Component {
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'].replace('http://', 'https://') +'/web/content/'+url_props['model']+'/'+url_props['id']+'/'+url_props['field']+'?download=true' }
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' // url = 'http://localhost:8069'+'/web/content/'+url_props['model']+'/'+url_props['id']+'/'+url_props['field']+'?download=true'
console.log('url111111',url) console.log('url111111', url)
return 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('url2',url) console.log('url2', url)
return url return url
// localStorage.setItem('url',url) // localStorage.setItem('url',url)
// let new_url = localStorage.getItem(('url')) // let new_url = localStorage.getItem(('url'))
// var oViewer = document.getElementsByTagName('model-viewer')[0]; // var oViewer = document.getElementsByTagName('model-viewer')[0];
// return new_url // return new_url
// url = "web_widget_model_viewer/static/src/images/not_model.png"; // url = "web_widget_model_viewer/static/src/images/not_model.png";
} }
} else {
var oImg = document.getElementsByClassName('test')[0]
console.log(oImg)
} }
} }
} }
StepViewer.template = "web_widget_model_viewer.BinaryField3d"; StepViewer.template = "web_widget_model_viewer.BinaryField3d";
@@ -56,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

@@ -2,37 +2,42 @@
<templates xml:space="preserve"> <templates xml:space="preserve">
<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>
<!-- <model-viewer--> <t t-if="!props.value">
<!-- src='/jikimo_model_viewer/static/src/js/3d_viewer/test.glb'--> <div style="color:red">当前制造订单暂无模型</div>
<!-- name="Test 3D model"--> </t>
<!-- alt="Test 3D model"-->
<!-- auto-rotate="1"--> <!-- <model-viewer-->
<!-- camera-controls="1"--> <!-- src='/jikimo_model_viewer/static/src/js/3d_viewer/test.glb'-->
<!-- />--> <!-- name="Test 3D model"-->
<!-- alt="Test 3D model"-->
<!-- auto-rotate="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>