Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增销售权限

# Conflicts:
#	sf_bf_connect/models/process_status.py
This commit is contained in:
jinling.yang
2023-11-21 16:11:24 +08:00
7 changed files with 58 additions and 57 deletions

View File

@@ -45,7 +45,8 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', {
setDefaultColumnWidths(column_num) { setDefaultColumnWidths(column_num) {
// const bbb = this.state.columns[0].name // const bbb = this.state.columns[0].name
const widths = this.state.columns.map((col) => this.calculateColumnWidth(col)); const widths = this.state.columns.map((col) =>
this.calculateColumnWidth(col));
// const sumOfRelativeWidths = (widths // const sumOfRelativeWidths = (widths
// .filter(({ type }) => type === "relative") // .filter(({ type }) => type === "relative")
// .reduce((sum, { value }) => sum + value, 0)); // .reduce((sum, { value }) => sum + value, 0));
@@ -65,16 +66,19 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', {
// } // }
// 判断 this.state.columns 是否存在且长度大于零 // 判断 this.state.columns 是否存在且长度大于零
if (this.state.columns && this.state.columns.length > 0 && this.state.columns[0].name === "sequence") { if (this.state.columns && this.state.columns.length > 0 &&
this.state.columns[0].name === "sequence") {
widths[1] = { type: "relative", value: 0.1 }; widths[1] = { type: "relative", value: 0.1 };
} }
// 1 because nth-child selectors are 1-indexed, 2 when the first column contains // 1 because nth-child selectors are 1-indexed,
// 2 when the first column contains
// the checkboxes to select records. // the checkboxes to select records.
const columnOffset = this.hasSelectors ? 2 : 1; const columnOffset = this.hasSelectors ? 2 : 1;
widths.forEach(({ type, value }, i) => { widths.forEach(({ type, value }, width) => {
const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); const headerEl = this.tableRef.el.querySelector(
`th:nth-child(${width + columnOffset})`);
if (type === "absolute") { if (type === "absolute") {
if (this.isEmpty) { if (this.isEmpty) {
headerEl.style.width = value; headerEl.style.width = value;
@@ -82,7 +86,8 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', {
headerEl.style.minWidth = value; headerEl.style.minWidth = value;
} }
} else if (type === "relative" && this.isEmpty) { } else if (type === "relative" && this.isEmpty) {
headerEl.style.width = `${((value / column_num) * 100).toFixed(2)}%`; headerEl.style.width = `${((value / column_num) * 100
).toFixed(2)}%`;
} }
}); });
}, },

View File

@@ -3,6 +3,7 @@ import logging
import requests import requests
from odoo import fields, models from odoo import fields, models
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)

View File

@@ -1,7 +1,7 @@
/** @odoo-module **/ /** @odoo-module **/
import { browser } from "@web/core/browser/browser"; // import { browser } from "@web/core/browser/browser";
import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner"; // import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner";
const { Component } = owl; const { Component } = owl;
import { standardFieldProps } from "@web/views/fields/standard_field_props"; import { standardFieldProps } from "@web/views/fields/standard_field_props";
import {registry} from "@web/core/registry"; import {registry} from "@web/core/registry";
@@ -23,19 +23,19 @@ export class CodeField extends Component {
this.record = this.props.record; this.record = this.props.record;
} }
async onBarcodeBtnClick() { // async onBarcodeBtnClick() {
const barcode = await BarcodeScanner.scanBarcode(); // const barcode = await BarcodeScanner.scanBarcode();
if (barcode) { // if (barcode) {
await this.onBarcodeScanned(barcode); // await this.onBarcodeScanned(barcode);
if ("vibrate" in browser.navigator) { // if ("vibrate" in browser.navigator) {
browser.navigator.vibrate(100); // browser.navigator.vibrate(100);
} // }
} else { // } else {
this.notification.add(this.env._t("Please, scan again !"), { // this.notification.add(this.env._t("Please, scan again !"), {
type: "warning", // type: "warning",
}); // });
} // }
} // }
async search(barcode) { async search(barcode) {
// alert('我是search') // alert('我是search')
const domain = [["code", "=", barcode]]; const domain = [["code", "=", barcode]];
@@ -65,33 +65,33 @@ export class CodeField extends Component {
// console.log('currentModel',this) // console.log('currentModel',this)
// console.log('this.record.data',this.record.data) // console.log('this.record.data',this.record.data)
// console.log('this.record.data.id', this.record.data.id) // console.log('this.record.data.id', this.record.data.id)
const workorder = await this.orm.call('mrp.workorder', 'read', [this.record.data.id]); // const workorder = await this.orm.call('mrp.workorder', 'read', [this.record.data.id]);
// console.log('workorder', workorder[0]) // console.log('workorder', workorder[0])
const updatedRecord = await this.orm.call("sf.tray", "write", [ // const updatedRecord = await this.orm.call("sf.tray", "write", [
[records[0].id], // [records[0].id],
{ // {
state: "占用", // state: "占用",
workorder_id: workorder[0].id, // workorder_id: workorder[0].id,
production_id: workorder[0].product_id[0], // production_id: workorder[0].product_id[0],
// workorder_id: workorder.id, // // workorder_id: workorder.id,
}]); // }]);
// console.log(workorder[0].routing_type); // console.log(workorder[0].routing_type);
// console.log(workorder[0].production_id); // console.log(workorder[0].production_id);
// const productionIDS = await this.orm.call('mrp.production', 'search', [[['id', '=', workorder[0].production_id[0]]]]); // const productionIDS = await this.orm.call('mrp.production', 'search', [[['id', '=', workorder[0].production_id[0]]]]);
const productionIDS = await this.orm.call('mrp.workorder', 'search', [[["production_id", "=", workorder[0].production_id[0]]]]); // const productionIDS = await this.orm.call('mrp.workorder', 'search', [[["production_id", "=", workorder[0].production_id[0]]]]);
// console.log('prooooooo', productionIDS); // console.log('prooooooo', productionIDS);
// console.log('values', records[0].values[0]); // console.log('values', records[0].values[0]);
productionIDS.forEach(async (data) => { // productionIDS.forEach(async (data) => {
// 处理每一个数据 // // 处理每一个数据
// console.log(data); // // console.log(data);
const updatetrayRecord = await this.orm.call("mrp.workorder", "write", [ // const updatetrayRecord = await this.orm.call("mrp.workorder", "write", [
[data], // [data],
{ // {
tray_id: records[0].values[0].id, // tray_id: records[0].values[0].id,
// tray_id: false, // // tray_id: false,
}]); // }]);
// console.log(updatetrayRecord) // // console.log(updatetrayRecord)
}); // });
this.props.update(records[0].code); this.props.update(records[0].code);
$('.o_form_button_save').click(); $('.o_form_button_save').click();
} else { } else {

View File

@@ -1,13 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import base64 import base64
from collections import defaultdict, namedtuple
import logging import logging
from re import findall as regex_findall import json
from datetime import datetime
from re import split as regex_split from re import split as regex_split
from re import findall as regex_findall
from datetime import datetime, timedelta
import requests import requests
from odoo import SUPERUSER_ID, _, api, fields, models from odoo import SUPERUSER_ID, _, api, fields, models
from odoo.tools import float_compare from odoo.tools import float_compare
from collections import defaultdict, namedtuple
from odoo.addons.stock.models.stock_rule import ProcurementException from odoo.addons.stock.models.stock_rule import ProcurementException
from odoo.addons.sf_base.commons.common import Common from odoo.addons.sf_base.commons.common import Common
from odoo.exceptions import UserError from odoo.exceptions import UserError

View File

@@ -21,7 +21,8 @@ class CustomKanbanController extends KanbanController {
// console.log(typeof this.workOrders); // console.log(typeof this.workOrders);
// console.log(Array.isArray(this.workOrders)); // console.log(Array.isArray(this.workOrders));
// //
// console.log(this.workOrders.every(order => typeof order === 'object' && order.id !== undefined)); // console.log(this.workOrders.every(order =>
// typeof order === 'object' && order.id !== undefined));

View File

@@ -1,3 +1,2 @@
# -*-coding:utf-8-*- # -*-coding:utf-8-*-
from . import models from . import models

View File

@@ -3,20 +3,14 @@
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 {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 {isBinarySize} from "@web/core/utils/binary";
import {download} from "@web/core/network/download";
import utils from 'web.utils';
import core from 'web.core'; import core from 'web.core';
import rpc from 'web.rpc';
var QWeb = core.qweb; var QWeb = core.qweb;
import {Component, onWillUpdateProps, useState, useRef, useEffect} from "@odoo/owl"; import {Component} from "@odoo/owl";
export class StepViewer extends Component { export class StepViewer extends Component {
setup() { setup() {
@@ -35,11 +29,11 @@ export class StepViewer extends Component {
} }
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'))