Files
jikimo_sf/sf_machine_connect/static/src/js/test.js

254 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// /** @odoo-module **/
//
// import { browser } from "@web/core/browser/browser";
// import { Dialog } from "@web/core/dialog/dialog";
// import { _lt } from "@web/core/l10n/translation";
// import { useChildRef, useOwnedDialogs, useService } from "@web/core/utils/hooks";
// import { sprintf } from "@web/core/utils/strings";
// import { isMobileOS } from "@web/core/browser/feature_detection";
// import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner";
//
// const {xml, Component} = owl;
// import { standardFieldProps } from "@web/views/fields/standard_field_props";
// // Import the registry
// import {registry} from "@web/core/registry";
//
//
// export class CodeField extends Component {
// setup() {
// super.setup();
// }
// async onBarcodeBtnClick() {
// const barcode = await BarcodeScanner.scanBarcode();
// if (barcode) {
// await this.onBarcodeScanned(barcode);
// if ("vibrate" in browser.navigator) {
// browser.navigator.vibrate(100);
// }
// } else {
// this.notification.add(this.env._t("Please, scan again !"), {
// type: "warning",
// });
// }
// }
// async search(barcode) {
// const results = await this.orm.call("sf.tray", "name_search", [code], {
// name: barcode,
// args: this.getDomain(),
// operator: "ilike",
// limit: 2, // If one result we set directly and if more than one we use normal flow so no need to search more
// context: this.context,
// });
// return results.map((result) => {
// const [id, displayName] = result;
// return {
// id,
// name: displayName,
// };
// });
// }
// async onBarcodeScanned(barcode) {
// const results = await this.search(barcode);
// const records = results.filter((r) => !!r.id);
// if (records.length === 1) {
// this.update([{ id: records[0].id, name: records[0].name }]);
// } else {
// const searchInput = this.autocompleteContainerRef.el.querySelector("input");
// searchInput.value = barcode;
// searchInput.dispatchEvent(new Event("input"));
// if (this.env.isSmall) {
// searchInput.click();
// }
// }
// }
// }
//
// CodeField.template = xml`
// <button
// t-on-click="onBarcodeBtnClick"
// type="button"
// class="btn ms-3 o_barcode"
// tabindex="-1"
// draggable="false"
// aria-label="Scan barcode"
// title="Scan barcode"
// data-tooltip="Scan barcode"
// />
// `;
// // CodeField.template = 'sf_machine_connect.CodeField';
// CodeField.props = standardFieldProps;
//
// // Add the field to the correct category
// registry.category("fields").add("code", CodeField);
/** @odoo-module **/
import { browser } from "@web/core/browser/browser";
import { Dialog } from "@web/core/dialog/dialog";
import { _lt } from "@web/core/l10n/translation";
import { useChildRef, useOwnedDialogs, useService } from "@web/core/utils/hooks";
import { sprintf } from "@web/core/utils/strings";
import { isMobileOS } from "@web/core/browser/feature_detection";
import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner";
const {xml, Component} = owl;
import { standardFieldProps } from "@web/views/fields/standard_field_props";
// Import the registry
import {registry} from "@web/core/registry";
export class CodeField extends Component {
setup() {
super.setup();
this.orm = this.env.services.orm;
this.record = this.props.record;
}
async onBarcodeBtnClick() {
// console.log(BarcodeScanner)
const barcode = await BarcodeScanner.scanBarcode();
// console.log(typeof barcode)
// alert(barcode)
if (barcode) {
// console.log("存在")
// alert('存在')
await this.onBarcodeScanned(barcode);
if ("vibrate" in browser.navigator) {
browser.navigator.vibrate(100);
}
} else {
// console.log("不存在")
// alert('不存在')
this.notification.add(this.env._t("Please, scan again !"), {
type: "warning",
});
}
}
async search(barcode) {
alert('我是search')
const domain = [["code", "=", barcode]];
// const domain = [];
console.log(domain)
alert('走到这里了')
const fields = ["id", "code", "name", "state"];
console.log(fields)
alert('走到这里了1')
const results = await this.orm.call("sf.tray", "search_read", [domain, fields]);
const values = await this.orm.call("sf.tray", "search_read", [domain]);
console.log(results)
alert('走到这里了2')
return results.map((result) => {
return {
id: result.id,
code: result.code,
name: result.name,
state: result.state,
values: values,
};
});
}
async onBarcodeScanned(barcode) {
// alert('我是ONbarcodeScanned')
const results = await this.search(barcode);
console.log(results)
const records = results.filter((r) => !!r.id);
console.log(records)
if (records.length === 1) {
if (records[0].state === '空闲') {
// const currentModel = this.env.models['mrp.workorder'];
console.log('currentModel',this)
console.log('this.record.data',this.record.data)
// const recordID = this.controllerParams.recordID;
// console.log('当前页面记录 ID', recordID);
// console.log('this.record',this.record.id)
// console.log('this.record',this.controllerParams.recordID)
// const workorder = await this.orm.call('mrp.workorder', 'read', [this.record.data.id, ['id']]);
console.log('this.record.data.id', this.record.data.id)
const workorder = await this.orm.call('mrp.workorder', 'read', [this.record.data.id]);
console.log('workorder', workorder[0])
const updatedRecord = await this.orm.call("sf.tray", "write", [
[records[0].id],
{
// state: "占用",
workorder_id: workorder[0].id,
production_id: workorder[0].product_id[0],
// workorder_id: workorder.id,
}]);
console.log(workorder[0].routing_type);
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.workorder', 'search', [[["production_id", "=", workorder[0].production_id[0]]]]);
console.log('prooooooo', productionIDS);
console.log('values', records[0].values[0]);
productionIDS.forEach(async (data) => {
// 处理每一个数据
console.log(data);
const updatetrayRecord = await this.orm.call("mrp.workorder", "write", [
[data],
{
tray_id: records[0].values[0].id,
// tray_id: false,
}]);
console.log(updatetrayRecord)
});
// this.trigger_up('reload')
// this.props.update(records[0].code, records[0].values);
this.props.update(records[0].code, records[0].tray_id);
// this.trigger_up('button_clicked', {
// attrs: {
// name: 'save',
// },
// });
// this.do_action({
// 'type': 'ir.actions.act_window',
// 'res_model': 'mrp.workorder',
// 'view_mode': 'form',
// 'view_type': 'form',
// 'res_id': workorder[0].id,
// 'target': 'current',
// })
} else {
if (records[0].state === '占用') {
console.log('此托盘已占用,请检查')
alert('此托盘已占用,请检查')
} else {
console.log('此托盘已损坏,请登记')
}
}
} else {
const searchInput = this.autocompleteContainerRef.el.querySelector("input");
searchInput.value = barcode;
searchInput.dispatchEvent(new Event("input"));
if (this.env.isSmall) {
searchInput.click();
}
}
}
}
CodeField.template = xml`
<div class="o_field_widget o_input o_barcode_field">
<!-- <input class="o_input" type="text" t-att-value="value"/>-->
<div class="o_input_container">
<t t-raw="widget"/>
</div>
<button
t-on-click="onBarcodeBtnClick"
type="button"
class="sf_button o_barcode btn ms-3 o_barcode"
tabindex="-1"
draggable="false"
aria-label="Scan barcode"
title="Scan barcode"
data-tooltip="Scan barcode"
/>
</div>
`;
// CodeField.template = 'sf_machine_connect.CodeField';
CodeField.props = standardFieldProps;
// Add the field to the correct category
registry.category("fields").add("code", CodeField);
// style="position: relative; left: 200px;"