weaver_trunk_cli/pc4mobx/hrm/stores/domain/Search.js

114 lines
2.5 KiB
JavaScript

import {
observable,
action,
computed,
} from 'mobx';
import {
WeaForm
} from 'comsMobx';
import {
WeaLocaleProvider,
} from 'ecCom';
import {
Button,
} from 'antd';
const getLabel = WeaLocaleProvider.getLabel;
export default class SearchStore {
constructor(api, rootStore) {
this.api = api;
this.rootStore = rootStore;
}
get buttons(){
return [getLabel(82529, '搜索'), getLabel(27088, '重置'), getLabel(32694, '取消')];
}
get searchProps() {
return {
advanceHeight: 130,
hasMask: false,
keyParam: 'key',
searchType: ['base', 'advanced'],
onChange: key => this.setSelectedKey(key),
setShowSearchAd: bool => this.setShowSearchAd(bool),
onSearch: () => this.onSearch(),
onSearchChange: val => this.onSearchChange(val),
buttonsAd: this.buttons.map((name, index) => {
const type = (index === 0) && "primary";
let callback;
if (index === 0) {
callback = () => this.onSearch();
} else if (index === 1) {
callback = () => this.form.reset();
} else {
callback = () => this.setShowSearchAd(false)
}
return <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@nurpo5@${index}`} type={type} onClick={() => callback()}>{name}</Button>
})
}
}
linkageFieldName;
@observable showSearchAd = false;
@observable form = new WeaForm();
@observable selectedKey = '';
@observable datas = [];
@computed get searchsAd() {
return <div
onKeyDown={(e) =>( e.keyCode == 13 && e.target.tagName === "INPUT") && this.onSearch()}
>{this.form.render()}</div>;
}
@computed get baseValue() {
return this.form.getFormParams()[this.linkageFieldName];
}
@action fetchSearch = (params = {}) => {
return this.api.fetchSearch(params).then(datas => {
const conditions = this.getCondition(datas);
this.form.setCondition(conditions);
});
}
@action setShowSearchAd = (bool) => {
this.showSearchAd = bool;
}
@action onSearch = () => {
this.rootStore.fetchTableList();
this.setShowSearchAd(false);
}
@action onSearchChange = (val) => {
if (this.linkageFieldName) {
this.form.updateFields({
[this.linkageFieldName]: val
});
}
}
@action setTabDatas = (datas) => {
this.datas = datas;
}
@action setSelectedKey = (key) => {
this.selectedKey = key;
}
setLinkageFieldName = (name) => {
this.linkageFieldName = name;
}
getCondition = (datas) => {
let c = [];
Object.keys(datas).forEach(key => {
if (key.includes('cdition')) {
c = datas[key];
}
})
return c;
}
}