Files
test/sf_machine_connect/static/src/js/barcode_button.js
2023-11-27 21:30:45 +08:00

120 lines
5.0 KiB
JavaScript

/** @odoo-module **/
// import { browser } from "@web/core/browser/browser";
// import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner";
const { Component } = owl;
import { standardFieldProps } from "@web/views/fields/standard_field_props";
import {registry} from "@web/core/registry";
import {useInputField} from "@web/views/fields/input_field_hook";
export class CodeField extends Component {
setup() {
// console.log('CodeField created')
// console.log('this',this)
// console.log('this.props',this.props)
// console.log('this.props.record',this.props.value)
useInputField({
getValue: () => this.props.value,
refName: "scan_code",
});
// console.log('我是setup1')
super.setup();
this.orm = this.env.services.orm;
this.record = this.props.record;
}
// 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) {
// alert('我是search')
const domain = [["code", "=", barcode]];
// console.log(domain)
const fields = ["id", "code", "name", "state"];
// console.log(fields)
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)
return results.map((result) => {
return {
id: result.id,
code: result.code,
name: result.name,
state: result.state,
values: values,
};
});
}
async onBarcodeScanned(barcode) {
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 === '空闲') {
// console.log('currentModel',this)
// console.log('this.record.data',this.record.data)
// 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.props.update(records[0].code);
$('.o_form_button_save').click();
} else {
if (records[0].state === '占用') {
// console.log('此托盘已占用,请检查')
alert('此托盘已占用,请检查');
} else {
// console.log('此托盘已损坏,请登记')
alert('此托盘已损坏,请登记');
}
}
} else {
const searchInput = this.autocompleteContainerRef.el.querySelector("input");
searchInput.value = barcode;
searchInput.dispatchEvent(new Event("input"));
if (this.env.isSmall) {
searchInput.click();
}
}
}
}
CodeField.template = 'sf_machine_connect.CodeField';
// Register the field in the registry
CodeField.props = standardFieldProps;
registry.category("fields").add("code", CodeField);