Files
gzth/app_web_widget_ztree/static/src/js/ztree_select.js
T
2025-04-05 17:11:33 +08:00

102 lines
3.6 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 */
// const { Component, useEffect, onWillStart, onWillUnmount } = owl;
import {session} from "@web/session";
import { useService } from "@web/core/utils/hooks";
import { registry } from "@web/core/registry";
import { ZtreeMany2X } from "@app_web_widget_ztree/js/ztree_many2x";
import { Many2OneField, many2OneField } from '@web/views/fields/many2one/many2one_field';
//todo: ztree 继承 import { AutoComplete } from "@web/core/autocomplete/autocomplete";
//field ztree 继承 fieldm2o,优化 xml 并入 Many2XAutocomplete
export class FieldZTree extends Many2OneField {
setup() {
super.setup();
let self = this;
this.limit = this.SEARCH_MORE_LIMIT ? this.SEARCH_MORE_LIMIT : 1000;
this.ztree_domain = self.getDomain();
this.ztree_field = self.props.name;
this.ztree_model = self.relation;
this.ztree_parent_key = self.props.ztree_parent_key;
this.ztree_root_id = self.props.ztree_root_id;
this.ztree_name_field = self.props.ztree_name_field;
this.ztree_selected_id = self.props.value ? self.props.value[0] : false;
this.order = self.props.order;
this.ztree_expend_level = self.props.ztree_expend_level;
// onWillStart(async () => {
// //数据初始化
// await this.willStart();
// });
// useEffect(() => this.start());
}
get ZtreeMany2xProps() {
let self = this;
let res = {
...self.Many2XAutocompleteProps,
data: {
ztree_domain: self.ztree_domain,
ztree_field: self.ztree_field,
ztree_model: self.relation,
ztree_parent_key: self.ztree_parent_key,
ztree_root_id: self.ztree_root_id,
ztree_expend_level: self.ztree_expend_level,
ztree_name_field: self.props.ztree_name_field,
ztree_selected_id: self.props.value ? self.props.value[0] : false,
order: self.order,
},
}
return res;
}
}
FieldZTree.template = "App.FieldZtree";
FieldZTree.supportedTypes = ["many2one"];
FieldZTree.components = {
...Many2OneField.components,
ZtreeMany2X,
};
//todo: 自行渲染 Many2XAutocomplete , loadOptionsSource, web.Many2XAutocomplete
FieldZTree.props = {
...Many2OneField.props,
ztree_parent_key: { type: String, optional: true },
ztree_root_id: { type: Number, optional: true },
ztree_name_field: { type: String, optional: true },
order: { type: String, optional: true },
ztree_expend_level: { type: String, optional: true },
};
FieldZTree.extractProps = ({ field, attrs }) => {
return {
...Many2OneField.extractProps({ field, attrs }),
ztree_parent_key: attrs.options.ztree_parent_key,
ztree_root_id: attrs.options.ztree_root_id,
ztree_name_field: attrs.options.ztree_name_field,
order: attrs.options.order,
ztree_expend_level: attrs.options.ztree_expend_level,
};
};
export const fieldZTree = {
...many2OneField,
component: FieldZTree,
extractProps({ options }) {
const props = many2OneField.extractProps(...arguments);
props.ztree_parent_key = options.ztree_parent_key;
props.ztree_root_id = options.ztree_root_id;
props.ztree_name_field = options.ztree_name_field;
props.order = options.order;
props.ztree_expend_level = options.ztree_expend_level;
return props;
},
};
registry.category("fields").add("ztree_select", fieldZTree);
// registry.category("fields").add("list.ztree_select", FieldZTree);
// registry.category("fields").add("kanban.ztree_select", FieldZTree);