69 lines
2.6 KiB
JavaScript
69 lines
2.6 KiB
JavaScript
/** @odoo-module **/
|
||
|
||
import { registry } from "@web/core/registry";
|
||
import { standardFieldProps } from "@web/views/fields/standard_field_props";
|
||
import { useBus, useService } from "@web/core/utils/hooks";
|
||
const { Component, xml } = owl;
|
||
|
||
|
||
export class BarcodeHandlerField extends Component {
|
||
setup() {
|
||
this.actionService = useService("action")
|
||
const barcode = useService("barcode");
|
||
// this.rpc = useService("rpc");
|
||
// useBus(barcode.bus, "barcode_scanned", this.onBarcodeScanned.bind(this));
|
||
useBus(barcode.bus, "barcode_scanned", this.onBarcodeScanned.bind(this));
|
||
}
|
||
async _rpc(params) {
|
||
// const { data } = await this.env.services.rpc('/web/dataset/call_kw', params);
|
||
const response = await this.env.services.rpc('/web/dataset/call_kw', params);
|
||
// return response
|
||
const responseObject = JSON.parse(response)
|
||
return responseObject;
|
||
}
|
||
|
||
async onBarcodeScanned(event) {
|
||
const { barcode } = event.detail;
|
||
this.props.update(barcode);
|
||
// const actionService = useService("action");
|
||
// const productId = 12345
|
||
// 根据条形码获取相关数据,例如产品ID
|
||
const response = await this._rpc({
|
||
model: 'mrp.workorder',
|
||
method: 'get_product_id_by_barcode',
|
||
args: [barcode],
|
||
kwargs:{},
|
||
});
|
||
if (response.result) {
|
||
// const action = response.result;
|
||
// console.log(action)
|
||
// console.log('11111111111111111111111111111111111');
|
||
// 通过产品ID执行操作并跳转到表单视图
|
||
// await this.actionService.doAction({
|
||
// // type: 'ir.actions.act_window',
|
||
// // res_model: 'product.product',
|
||
// // res_id: productId,
|
||
// // views: [[false, 'form']],
|
||
// // target: 'current',
|
||
// 'name': '工单',
|
||
// 'type': 'ir.actions.act_window',
|
||
// 'views': [[false, 'form']],
|
||
// 'view_mode': 'form',
|
||
// 'res_model': 'mrp.workorder',
|
||
// 'view_id': 918,
|
||
// 'res_id': 1023,
|
||
// 'target': 'current',
|
||
// });
|
||
await this.actionService.doAction(response.result);
|
||
} else {
|
||
console.error("Barcode not found or RPC call failed.");
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
BarcodeHandlerField.template = xml``;
|
||
BarcodeHandlerField.props = { ...standardFieldProps };
|
||
|
||
registry.category("fields").add("barcode_handlerrr", BarcodeHandlerField);
|